kdb / q — как мне выбрать по настроенному списку времени?

#kdb

#kdb

Вопрос:

Я знаю, что могу select by sym, time.second from table выбирать по секундам или использовать xbar для некоторых других фиксированных временных интервалов

Но это более или менее однородные временные интервалы. Как мне предоставить полностью настроенный список времени в select by?

Ответ №1:

вы могли бы использовать binr для достижения этой цели

 q)tab:([]t:.z.d 10000?.z.n)
q)/ create custom bins ensuring in ascending time order for binr to work correctly 
q)tl:.z.d 09:30 10:45 15:32
q)/ x binr y - will return the index of first item in x which is ≥y 
q)/ we then index back into our tl with result 
q)select count i by tl tl binr t from tab 
t                            | x   
-----------------------------| --
2019.03.31D09:30:00.000000000| 6443
2019.03.31D10:45:00.000000000| 807 
2019.03.31D15:32:00.000000000| 2750
  

Комментарии:

1. Обратите внимание, что bin использует двоичный поиск, который предполагает, что список времени отсортирован и не даст ожидаемых результатов, если это не так. Попробуйте добавить 12:00 в конец tl , например