2

我想遍历时间序列中的所有行,分区 kdb 数据库并在每一步执行一些计算。在 SQL 中,这可以通过游标来完成。kdb中有类似的东西吗?

一些背景知识:数据库包含数百万个时间序列记录,当我在行中进行时,我需要维护许多对象的状态。我需要在每个步骤中运行一些“if”语句。我想将我的计算集成到一个查询中,但由于我必须执行的测试数量,我认为游标或类似行回调的东西会更合适。在“重放”数据库时运行自定义代码的最有效解决方案是什么?

4

1 回答 1

1

q 中的表的行为很像字典列表。因此,如果 t 是一个表,则 t[0] 将是一个字典,将列名映射到第一行值,t[1] 将是第二行,依此类推。所以实际上你的光标只是一个索引,而前进的光标只是增加索引。

q)t:([]c1:1 2 3;c2:`a`b`c);
q)show t[0];
c1| 1
c2| `a
q)show t[1];
c1| 2
c2| `b

另一方面,将操作应用于列表元素的更惯用方式可能是使用each运算符:

q)f:{show x};
q)f each t;
c1| 1
c2| `a
c1| 2
c2| `b
c1| 3
c2| `c
于 2013-05-29T03:28:19.220 回答