【问题标题】:How to get data for a time range in Q/kdb?如何在 Q/kdb 中获取时间范围内的数据?
【发布时间】:2014-02-13 19:14:46
【问题描述】:
我在q中有如下函数:
{
raze {[x]
update PnlTime:x from
flip ?[getPnl[`date`status!(2013.05.14;`traded)];
();();`date`Id`market`pnl!(`date;`Id;`market;x)]
} each `pnl_0s`pnl_1s`pnl_5s
}
在这里,我从函数getPnl 检索特定日期的数据,并通过加入pnl_0s 等创建一个新列pnl。如何修改此查询以传递时间范围(firstdate;lastdate)?
【问题讨论】:
标签:
function
time
kdb
q-lang
【解决方案1】:
最佳答案取决于您的餐桌。如果这是一个显示日期的表格,我想最好的地方是在 getPnl 函数内。大概它正在做类似的事情:
select from aTable where date=x,....
替换为:
select from aTable where date within (d1;d2),...
对于显示日期的表格,当 d1==d2 时,“日期=”与“日期范围内”没有匹配。
如果您很遗憾无法访问此功能,则需要分别执行另一个操作,如下所示:
说 d1=2014.01.01, d2=2014.02.14
raze {[x] getPnl[`date`status!(x;`traded)]} each d1,d1+til 1+d2-d1
最后一点具有创建从 d1 到 d2(包括)日期列表的魔力