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

In Q, how do I get the rows for the last X minutes from a Kdb table?

我有一个 table 有价格信息。并构建一个前端功能,允许用户查看最近 X 分钟的所有价格,其中用户指定 X。

如何在q中查询这个?

假设您的 table 叫做 table。您可以创建一个函数 f,它接受一个参数 x:您想要 select 从之前的分钟数。

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

然后,例如要获取过去 15 分钟的价格信息,您可以这样做:

q)f[15]

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

q){select from trades where time >= .z.n-`minute$x}