标签: kdb

如何在 kdb+ 中格式化双打

kdb q 中是否有类似 printf 的函数?我正在尝试将双字段格式化为 4 位精度。等效的 printf 格式是“%.04f”。

printing kdb

3
推荐指数
1
解决办法
1269
查看次数

如何在 KDB 中流式传输数据?

我可以访问一个实时 KDB 服务器,该服务器具有每毫秒到达的新数据表。

目前,我只是使用一种简单的方法,它基本上是这样的:

.z.ts:{
    newData: getNewData[];   / get data arriving in the last second
    data::data uj newData;
};
\t 100;
Run Code Online (Sandbox Code Playgroud)

确保我的数据(名为data)不断更新。

然而,uj它非常慢(可能是由于内存的不断重新分配)并且轮询只是很尴尬。

我听说 KDB 旨在擅长处理这种流式刻度数据,那么有更好的方法吗?也许一些不需要的基于推送的方法uj

real-time kdb q-lang

3
推荐指数
1
解决办法
3067
查看次数

将子字符串放入新列

我有一个表格,其中包含一个具有以下格式数据的列 - 让我们将列称为“标题”,将表格称为“s”

标题

ab.123
ab.321 
cde.456
cde.654
fghi.789
fghi.987
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取“.”之前的字符的唯一列表。所以我最终得到了这个:

ab
cde
fghi
Run Code Online (Sandbox Code Playgroud)

我尝试将初始列选择到表格中,然后尝试进行更新以使用“ss”创建一个新列,该列是点的位置。

像这样:

t: select title from s
update thedot: (title ss `.)[0] from t
Run Code Online (Sandbox Code Playgroud)

然后我打算尝试做第三列,它是“标题”中的“N”个字符,其中 N 是存储在“thedot”列中的值。

我尝试更新时得到的只是“类型”错误。

有任何想法吗?我对 kdb 很陌生,所以毫无疑问以一种非常愚蠢的方式做一些简单的事情。

substring kdb q-lang

3
推荐指数
1
解决办法
4113
查看次数

如何终止 RDB 或 HDB 中的 KDB 查询?

我们有一个股票行情工厂,有时有人错误地在没有日期的 HDB 中运行查询,或者在没有时间的 RDB 中运行查询,或者使用一些其他处理逻辑,这可能会杀死 KDB。我们如何在不重新启动 KDB 实例的情况下找到并终止查询?

kdb q-lang

3
推荐指数
1
解决办法
3352
查看次数

kdb+:使用字符串作为变量名

如何使用字符串作为变量名?

我希望在运行时构造我的变量名,但是如何将其用作左参数并为其分配值?

例子:

[`$"test"] : 1              / 'assign error
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
1
解决办法
1942
查看次数

KDB 从每组中选择第一行

非常愚蠢的问题......考虑下面按 sym 排序的表 t1。

t1:([]sym:(3#`A),(2#`B),(4#`C);val:10 40 12 50 58 75 22 103 108)

sym val
A   10
A   40
A   12
B   50
B   58
C   75
C   22
C   103
C   108
Run Code Online (Sandbox Code Playgroud)

我想选择与每个符号对应的第一行,如下所示:

(`sym`val)!(`A`B`C;10j, 50j, 75j)

sym val
A   10
B   50
C   75
Run Code Online (Sandbox Code Playgroud)

必须有一个单线来做到这一点。要获取每个符号的最后一行,就像select by sym from t1. 任何提示?

select kdb

3
推荐指数
2
解决办法
4095
查看次数

计算kdb表中每个变量的最小值和最大值

考虑下表:

sym A B
X   1 2
Y   4 1
X   6 9
Z   6 3
Z   3 7
Y   1 8
Run Code Online (Sandbox Code Playgroud)

我想为我的每个符号 X、Y 和 Z 找到最小 A 值和最大 B 值,并将它们显示在新表中,即

sym minA maxB
X   1    9
Y   1    8
Z   3    7
Run Code Online (Sandbox Code Playgroud)

谢谢。

kdb q-lang

3
推荐指数
1
解决办法
636
查看次数

q - 使用 try catch 加载脚本

我有一个 aq 脚本C:\some\path\startup.q,可以将其他几个 q 脚本加载到当前会话中,如下所示

\l C:\some\other\path\script1.q
\l C:\some\other\path\script2.q
\l C:\some\other\path\script3.q
Run Code Online (Sandbox Code Playgroud)

现在,我可能想检查多个路径等script1.q。例如,当我处于部署环境而不是本地环境中时,这些路径是不同的。所以我想尝试捕获负载操作符

@[\l;C:\some\other\path\script1.q;`errormessage]
Run Code Online (Sandbox Code Playgroud)

这当然是无稽之谈。但我在 q 中找到了此处system描述的命令。例如

\w / lists memory usage
system "w" / same command
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于\l

system "l C:\some\path\startup.q"
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

kdb q-lang

3
推荐指数
1
解决办法
397
查看次数

如何使用不同的文件名(KDB)保存大文件?

我有一个有点大的表(保存时约为 3GB),位于名为“data”的变量中。

我可以将其保存到文件中:

save `:data.csv
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用不同的文件名保存它,则会收到错误:

sd: 2017.12.08;

string[sd],".csv" set data

ERROR: 'limit 
(tried to generate a list with more than 2,000,000,000 elements (keep in mind that any IPC result is a byte list, hence can't be longer than 2 metric Gb))
Run Code Online (Sandbox Code Playgroud)

我怎样才能克服这个错误?我尝试了多种方法,我确信这很简单,但无法找到解决方法。

kdb

3
推荐指数
1
解决办法
2224
查看次数

q中的IPC,如何阻塞直到句柄上收到任何消息

在 4.0 中,如何阻塞控制流,直到句柄上收到任何消息?

\n

在 3.6 版本中,我可以使用https://code.kx.com/q/basics/ipc/#block-queue-flushr:h[]中描述的技术

\n

r:h[]但从 4.0 开始,即使我从第二个进程发送类似的内容,呼叫也会永远挂起key[.z.W]@\\:".z.i"(对于 3.6,这是第二个进程有点挂起:它开始成为进程 1 的从属进程,只为它提供服务)请求,但在 4.0 中,进程 1 永远挂起,仅响应进程 2)

\n

这是我在2019.04.02 3.6看到的:

\n
                       \xe2\x94\x82q)\\p 15555\nq)h:hopen`::15555      \xe2\x94\x82q)\nq)                     \xe2\x94\x82q).z.W\nq)h[]                  \xe2\x94\x825|\n// blocked             \xe2\x94\x82q)5i".z.i"\n".z.i"                 \xe2\x94\x82// blocked\nq)q)                   \xe2\x94\x82// blocked\n
Run Code Online (Sandbox Code Playgroud)\n

kdb

3
推荐指数
1
解决办法
293
查看次数

标签 统计

kdb ×10

q-lang ×5

printing ×1

real-time ×1

select ×1

substring ×1