Q Language - Katılıyor

İçinde qdil, sağlanan giriş tablolarına ve arzu ettiğimiz birleştirilmiş tablo türlerine göre farklı türde birleştirmelerimiz var. Bir birleşim, iki tablodaki verileri birleştirir. Yabancı anahtar takibinin yanı sıra, masalara katılmanın dört yolu daha var -

  • Basit birleştirme
  • Asof katılma
  • Sol yönden katılım
  • Sendika katılımı

Burada, bu bölümde, bu birleşimlerin her birini ayrıntılı olarak tartışacağız.

Basit Birleştirme

Basit birleştirme, virgül ',' ile gerçekleştirilen en temel birleştirme türüdür. Bu durumda, iki tablonuntype conformantyani, her iki tablo da aynı sırada aynı sayıda sütuna ve aynı anahtara sahiptir.

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

Aynı uzunluktaki tabloların yana doğru birleştirilmesi için virgül kullanabiliriz. Tablolardan biri burada anahtarlanabilir,

Table1, `Table2

Asof Join (aj)

Bir tablodaki bir alanın değerini, başka bir tablodaki zamana göre almak için kullanılan en güçlü birleştirmedir. Genellikle her işlem sırasında geçerli teklifi almak ve talep etmek için kullanılır.

Genel format

aj[joinColumns;tbl1;tbl2]

Örneğin,

aj[`sym`time;trade;quote]

Misal

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

Sol Birleştirme (lj)

İkinci bağımsız değişkenin anahtarlı bir tablo olduğu ve ilk bağımsız değişkenin sağ bağımsız değişkenin anahtarının sütunlarını içerdiği özel bir aj durumu.

Genel format

table1 lj Keyed-table

Misal

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

Birliğe Katılma (uj)

Farklı şemalara sahip iki tablonun birleşimini oluşturmaya izin verir. Temelde basit birleştirmenin bir uzantısıdır (,)

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

Anahtarlı tablolarda uj kullanıyorsanız, birincil anahtarların eşleşmesi gerekir.