как получить столбец из таблицы на основе столбцов из другой таблицы KDB - PullRequest
0 голосов
/ 28 апреля 2020

Я запросил 3 столбца из таблицы следующим образом:

lst: distinct select  b_market_order_no,instrumentID,mkt from tb  where event=`OvernightOrder

на основании этих данных я хочу запросить другую таблицу и получить из нее столбец дат

select dates from tbp where

Я Я не совсем уверен, как применить здесь предложение where или join, чтобы значения из lst получали соответствующий столбец дат из tbp. Обе таблицы tb и tbp имеют одинаковые столбцы, они создаются для разных дней из одной и той же схемы.

1 Ответ

3 голосов
/ 28 апреля 2020

Если я правильно понимаю ваш вариант использования, то вы можете использовать таблицу в вашем предложении where следующим образом:

q)show tab1:([]a:1 2 3;b:4 5 6)
a b
---
1 4
2 5
3 6
q)show tab2:([]date:.z.d+1 2 3;a:2 3 4;b:5 6 7)
date       a b
--------------
2020.04.29 2 5
2020.04.30 3 6
2020.05.01 4 7
q)select date from tab2 where([]a;b)in tab1
date
----------
2020.04.29
2020.04.30

В основном это создает таблицу соответствующих столбцов из tab2, которые в tab1 и сравнивает их.

Если схема объединяемой таблицы является переменной, может потребоваться другой подход, например, такой:

q)select date from tab2 where(cols[tab1]#tab2)in tab1
date
----------
2020.04.29
2020.04.30

Или даже с использованием lj и добавление дополнительного логического столбца для отметки допустимых строк в tab1 для выбора из tab2:

select date from(tab2 lj cols[tab1]xkey update c:1b from tab1)where c
...