Передать множественный параметр функции по столбцу kdb q - PullRequest
0 голосов
/ 29 июня 2018

Я недавно изучаю 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 голосов
/ 29 июня 2018

Вы можете использовать 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 можно использовать в тех случаях, когда нам нужны точные совпадения

...