在 Q 中,如何从 Kdb 表中获取最后 X 分钟的行?

Anc*_*her 0 kdb

我有一张带有价格信息的桌子。并构建一个前端功能,允许用户查看过去 X 分钟(用户指定 X)的所有价格。

我如何在q中查询这个?

S.S*_*art 5

假设您的表名为table. 您可以创建一个函数f,它接受一个参数x:您想要选择的之前的分钟数。

q)f:{select price from table where time within (.z.p-`minute$x;.z.p)}
Run Code Online (Sandbox Code Playgroud)

然后,例如要获取最后 15 分钟的价格信息,您可以执行以下操作:

q)f[15]
Run Code Online (Sandbox Code Playgroud)


小智 5

假设您的表名为trades,并且该trades表有一个时间列,您可以使用以下函数来实现所需的输出:

q){select from trades where time >= .z.n-`minute$x}
Run Code Online (Sandbox Code Playgroud)