Kdbplus-q-language-joins
提供:Dev Guides
Q言語-結合
*q* 言語では、提供される入力テーブルと必要な結合テーブルの種類に基づいて、さまざまな種類の結合があります。 結合は、2つのテーブルのデータを結合します。 外部キーの追跡に加えて、テーブルを結合する4つの方法があります-
- 簡単な結合
- Asof Join
- 左結合
- 組合加入
ここで、この章では、これらの各結合について詳しく説明します。
単純結合
単純な結合は、カンマ「、」で実行される最も基本的な種類の結合です。 この場合、2つのテーブルは type conformant である必要があります。つまり、両方のテーブルは同じ順序で同じ列数と同じキーを持っています。
table1,:table2/table1 is assigned the value of table2
同じ長さのテーブルにカンマごとの結合を使用して、横方向に結合できます。 ここでテーブルの1つにキーを付けることができます。
Table1, `Table2
Asof Join(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の特殊なケースであり、2番目の引数はキー付きテーブルであり、1番目の引数には正しい引数のキーの列が含まれます。
一般的な形式
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
ユニオン結合(uj)
異なるスキーマを持つ2つのテーブルの結合を作成できます。 基本的には、単純な結合(、)の拡張です
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を使用している場合、主キーは一致する必要があります。