Język Q - dołącza
W qjęzyk, mamy różne rodzaje sprzężeń w oparciu o dostarczone tabele wejściowe i pożądany rodzaj połączonych tabel. Łączenie łączy dane z dwóch tabel. Oprócz pogoni za kluczem obcym istnieją cztery inne sposoby dołączania do tabel -
- Proste łączenie
- Jak dołączyć
- Lewe połączenie
- Dołącz do Unii
Tutaj, w tym rozdziale, szczegółowo omówimy każde z tych połączeń.
Proste łączenie
Łączenie proste to najbardziej podstawowy typ łączenia, wykonywany przecinkiem „,”. W takim przypadku dwie tabele muszą byćtype conformant, czyli obie tabele mają taką samą liczbę kolumn w tej samej kolejności i ten sam klucz.
table1,:table2 / table1 is assigned the value of table2
Możemy użyć łączenia przecinkiem-każde dla tabel o tej samej długości, aby łączyć na boki. Tutaj można wprowadzić klucz do jednej z tabel,
Table1, `Table2
Asof Join (aj)
Jest to najpotężniejsze sprzężenie, które służy do uzyskania wartości pola w jednej tabeli w czasie w innej tabeli. Zwykle służy do uzyskania dominującej oferty i zapytania w momencie każdej transakcji.
Ogólny format
aj[joinColumns;tbl1;tbl2]
Na przykład,
aj[`sym`time;trade;quote]
Przykład
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
Łączenie lewe (lj)
Jest to specjalny przypadek aj, w którym drugi argument jest tabelą z kluczem, a pierwszy argument zawiera kolumny klucza prawego argumentu.
Ogólny format
table1 lj Keyed-table
Przykład
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)
Pozwala na utworzenie unii dwóch tabel z różnymi schematami. Jest to w zasadzie rozszerzenie prostego łączenia (,)
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
Jeśli używasz uj w tabelach z kluczem, klucze podstawowe muszą być zgodne.