В языке q у нас есть различные виды объединений, основанные на предоставленных входных таблицах и желаемых типах объединяемых таблиц. Объединение объединяет данные из двух таблиц. Помимо отслеживания внешнего ключа, есть еще четыре способа объединения таблиц:
- Простое соединение
- Asof присоединиться
- Левый присоединиться
- Союз присоединиться
Здесь, в этой главе, мы подробно обсудим каждое из этих объединений.
Простое соединение
Простое объединение — это самый простой тип объединения, выполняемый с запятой ‘,’. В этом случае две таблицы должны соответствовать типу , т. Е. Обе таблицы имеют одинаковое количество столбцов в одинаковом порядке и одинаковый ключ.
table1,:table2 / table1 is assigned the value of table2
Мы можем использовать объединение через запятую для таблиц одинаковой длины, чтобы соединять вбок. Здесь можно ввести одну из таблиц,
Table1, `Table2
Asof Регистрация (aj)
Это самое мощное соединение, которое используется для получения значения поля в одной таблице за время в другой таблице. Обычно он используется, чтобы получить преобладающую ставку и спросить во время каждой сделки.
Общий формат
aj[joinColumns;tbl1;tbl2]
Например,
aj[`sym`time;trade;quote]
пример
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show aj[`a`b;tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
Левое соединение (lj)
Это особый случай aj, где второй аргумент является таблицей с ключами, а первый аргумент содержит столбцы ключа правого аргумента.
Общий формат
table1 lj Keyed-table
пример
q)/Left join- syntax table1 lj table2 or lj[table1;table2] q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6)) q)show lj[tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
Union Join (UJ)
Это позволяет создать объединение двух таблиц с различными схемами. Это в основном расширение простого соединения (,)
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show uj[tab1;tab2] a b d c ------------ 1 2 6 2 3 7 3 4 8 4 5 9 2 3 4 3 4 5 4 5 6
Если вы используете uj в таблицах с ключами, то первичные ключи должны совпадать.