【问题标题】: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(包括)日期列表的魔力

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多