通过kdb列传递多功能参数q

时间:2018-06-28 21:53:25

标签: kdb

我最近正在学习kdb \ q。我有一个声明如下的函数:

func_demo:{[id;time] select last synp from synp_test where instrument_id = id, tp_time < time}

该功能运行完美。例如,func_demo[1;13:00:08]将给我单行输出:

synp
----
7094.157

但是,我想将多行数据传递给该函数,该函数给了我多行结果。

例如,我的表t如下所示:

id     time
--------------
1     13:00:04
2     13:00:16
...

如果可能,我想传递整个id列和time列,我的预期结果将是:

id   time        synp
-------------------------
1    13:00:04    7094.157
2    13:00:08    8085.867
...

有没有办法解决这个问题?非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用aj,如果时间不完全匹配,它将返回当前价格。

q)synp_test:update `g#id from `tp_time xasc  ([] tp_time:13:00:04 13:00:08 13:00:12  ; id: 1 2 3 ;price:10 11 12)   //
q)t1:([] id: 1 2; tp_time:13:00:04 13:00:09 )
aj[`id`tp_time;t1;synp_test]
id  tp_time     price
1   13:00:04    10
2   13:00:09    11

lj可用于需要完全匹配的情况