Q 언어-조인

q제공되는 입력 테이블과 원하는 조인 테이블의 종류에 따라 서로 다른 종류의 조인이 있습니다. 조인은 두 테이블의 데이터를 결합합니다. 외래 키 추적 외에도 테이블을 결합하는 네 가지 다른 방법이 있습니다.

  • 간단한 조인
  • Asof 조인
  • 왼쪽 조인
  • 유니온 조인

이 장에서는 이러한 각 조인에 대해 자세히 설명합니다.

단순 결합

단순 조인은 쉼표 ','로 수행되는 가장 기본적인 조인 유형입니다. 이 경우 두 테이블은type conformant즉, 두 테이블 모두 동일한 순서로 동일한 수의 열과 동일한 키를 갖습니다.

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

길이가 같은 테이블에 대해 쉼표-각 조인을 사용하여 옆으로 조인 할 수 있습니다. 여기에 테이블 중 하나를 입력 할 수 있습니다.

Table1, `Table2

Asof 조인 (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의 특별한 경우입니다.

일반 형식

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)

별개의 스키마가있는 두 테이블의 유니온을 만들 수 있습니다. 기본적으로 단순 조인 (,)의 확장입니다.

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를 사용하는 경우 기본 키가 일치해야합니다.