标签: kdb

KDB'.' 操作者

.最简单形式的运算符用于索引列表.您如何在此代码中解释其在英语中的用法?

if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]
Run Code Online (Sandbox Code Playgroud)

我也不理解这一行中的空列表和::运算符,但也许它们一旦有意义就会有意义.被清除了.

kdb

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

从kdb实例检入列表

我将字符串存储在变量名res下的列表中.接下来,我构建一个查询字符串列表的查询.然而,似乎没有读取变量.

这就是我的意思:

q) hdl: (to a port)
q) res: `string1`string2`string3
**q) ans: hdl"select count i by date,sym from trade where date=xxx, sym in `res"**
Run Code Online (Sandbox Code Playgroud)

当我执行命令时,我总是得到一个空的结果集.我知道结果集不能为空.那么如何修复我的查询(以粗体显示)以返回结果?

请注意我正在unix框中的aq会话中执行任务.

kdb q-lang

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

在KDB/Q中按时滑动窗口

Q/KDB中有一些函数让我们在滑动窗口(msum,mavg等)上聚合.但是这些函数会考虑先前行的数量.

我想要一个可以在滑动窗口上聚合但有时间而不是行数的函数.例如在最后5分钟.

这样的功能存在吗?如果没有,我该如何设计呢?我不想使用while循环,因为它会因为大量数据而导致我的程序运行速度过慢.

谢谢您的帮助

aggregate aggregate-functions sliding-window kdb q-lang

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

KDB:从字典就地删除

要将元素向上插入字典,我会

q) d[`x]:12345
Run Code Online (Sandbox Code Playgroud)

这将修改现有的字典,并且操作成本接近O(1)O(log N)取决于基础实现(哈希表或树)(我不知道)。

但是,要删除密钥,我必须使用:

q) d:(enlist `x) _ d
Run Code Online (Sandbox Code Playgroud)

这至少O(N)是因为它复制了完整的词典而不删除其中的项目,O(N)然后由于指针而将其分配给dO(1)

这看起来像删除操作歧视!也许就地删除没有很好的文档记录,但是存在于某个地方?

dictionary kdb

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

KDB:如何从分区表中删除行

我有以下查询用于从分区表中删除行,但它不起作用.用于删除分区表中的行的方法是什么?

delete from SecurityLoan where lender=`SCOTIA, date in inDays, portfolio in portfoliolist
Run Code Online (Sandbox Code Playgroud)

请注意,inDaysportfoliolist在列表

kdb partition

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

每个权利和每个人之间的差异

在KDB中,为什么我可以这样做:

{[x;y]x+y} ./: enlist[(1;1);(2;1)]
Run Code Online (Sandbox Code Playgroud)

但不是这个:

{[x]x+1} ./: enlist[1;2]
Run Code Online (Sandbox Code Playgroud)

如果我使用这个:

{[x]x+1} each enlist[1;2]
Run Code Online (Sandbox Code Playgroud)

然后它工作.为什么采取2个参数会产生影响?

kdb

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

从 kdb 中的字符串中提取数字

我对 kdb+q 很陌生。我遇到过从字符串中提取数字的问题。

有什么建议?

例子:

"AZXER_1234_MARKET" should output 1234 //Assume that there is only one number in the 
Run Code Online (Sandbox Code Playgroud)

细绳

kdb q-lang

2
推荐指数
1
解决办法
1253
查看次数

KDB 字符串到 kdb `timestamp`

kdb凡人/神!!

我有一个日期时间字符串数组,但格式不同

> leads[`firstConversion]
"Wed May 20 2020 08:56:54 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:57 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:59 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:00 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:01 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:32 GMT-0700 …
Run Code Online (Sandbox Code Playgroud)

kdb

2
推荐指数
1
解决办法
1416
查看次数

将一元函数映射到列表 - 为什么并不总是需要 `each`?

我正在学习有关 q 的教程。这是初始设置。

buys:2 1 4 3 5 4
sells:2 4 3 2
Run Code Online (Sandbox Code Playgroud)

然后我定义了以下函数

f:{x & (sums buys)}
Run Code Online (Sandbox Code Playgroud)

我尝试用它

f (sums sells)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

'length
  [1]  f:{x & (sums buys)}
Run Code Online (Sandbox Code Playgroud)

我注意到如果我这样做,它会起作用

q)f each (sums sells)
2 2 2 2  2  2
2 3 6 6  6  6
2 3 7 9  9  9
2 3 7 10 11 11
Run Code Online (Sandbox Code Playgroud)

但是,以下输出列表的一元函数应用起来没有问题

q){(x*x;x)} (1 2 3)
1 4 9
1 2 3
Run Code Online (Sandbox Code Playgroud)

这两个函数的类型签名对我来说似乎是相同的。为什么其中一个得到评估,而另一个则引发错误?

kdb

2
推荐指数
1
解决办法
171
查看次数

更新符号长度小于 3 个字符的 KDB+/Q

我有一个这样的表:

test:([]column1:`A`B`C`D`E;column2:`Consumer`RealEstate`27`85`Technology)
Run Code Online (Sandbox Code Playgroud)

我需要编写一个更新查询,其中 column2 的字符数为 2 或更少,但我找不到任何方法来引用在 where 子句中使用的符号的字符长度。我将如何编写这样的查询,以便我的结果如下?

test:([]column1:`A`B`C`D`E;column2:`Consumer`RealEstate`NewCategory`NewCategory`Technology)
Run Code Online (Sandbox Code Playgroud)

kdb sql-update q

2
推荐指数
1
解决办法
695
查看次数