Q Sprache - Joins

Im qSprache haben wir verschiedene Arten von Verknüpfungen, basierend auf den bereitgestellten Eingabetabellen und der Art der verknüpften Tabellen, die wir wünschen. Ein Join kombiniert Daten aus zwei Tabellen. Neben der Verfolgung von Fremdschlüsseln gibt es vier weitere Möglichkeiten, Tabellen zu verknüpfen:

  • Einfacher Join
  • Asof beitreten
  • Links verbinden
  • Gewerkschaftsbeitritt

In diesem Kapitel werden wir jede dieser Verknüpfungen ausführlich behandeln.

Einfacher Beitritt

Einfache Verknüpfung ist die grundlegendste Art der Verknüpfung, die mit einem Komma ',' ausgeführt wird. In diesem Fall müssen die beiden Tabellen seintype conformantDas heißt, beide Tabellen haben dieselbe Anzahl von Spalten in derselben Reihenfolge und denselben Schlüssel.

table1,:table2 / table1 is assigned the value of table2

Wir können Komma-jeden Join für Tabellen mit derselben Länge verwenden, um seitlich zu verbinden. Eine der Tabellen kann hier verschlüsselt werden,

Table1, `Table2

Asof Join (aj)

Dies ist der leistungsstärkste Join, mit dem der Wert eines Felds in einer Tabelle ab dem Zeitpunkt in einer anderen Tabelle ermittelt wird. Im Allgemeinen wird es verwendet, um das vorherrschende Gebot zu erhalten und zum Zeitpunkt jedes Handels zu fragen.

Allgemeines Format

aj[joinColumns;tbl1;tbl2]

Zum Beispiel,

aj[`sym`time;trade;quote]

Beispiel

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

Links beitreten (lj)

Es ist ein Sonderfall von aj, bei dem das zweite Argument eine Schlüsseltabelle ist und das erste Argument die Spalten des Schlüssels des richtigen Arguments enthält.

Allgemeines Format

table1 lj Keyed-table

Beispiel

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)

Es ermöglicht die Erstellung einer Vereinigung von zwei Tabellen mit unterschiedlichen Schemata. Es ist im Grunde eine Erweiterung des einfachen Joins (,)

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

Wenn Sie uj für Schlüsseltabellen verwenden, müssen die Primärschlüssel übereinstimmen.