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.