首页 文章

按列kdb q传递多个函数参数

提问于
浏览
0

我最近在学习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 回答

  • 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 可用于我们想要完全匹配的情况

相关问题