如何在kdb中创建游标?

时间:2013-05-28 23:36:35

标签: kdb

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

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

1 个答案:

答案 0 :(得分: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

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

q)f:{show x};
q)f each t;
c1| 1
c2| `a
c1| 2
c2| `b
c1| 3
c2| `c