join
서브 쿼리 결과를 조인 키 기준으로 병합합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 분석 노드에서 실행 (reducer) |
문법
옵션
type={inner|left|leftonly|right|rightonly|cross|full}- 조인 유형 (기본값:
inner)
inner: 양쪽 모두 조인 키가 일치하는 레코드만 출력left: 왼쪽(입력) 레코드를 모두 출력하고, 조인 키가 일치하면 오른쪽(서브 쿼리) 필드를 병합leftonly: 오른쪽에 일치하는 키가 없는 왼쪽 레코드만 출력right: 오른쪽(서브 쿼리) 레코드를 모두 출력하고, 조인 키가 일치하면 왼쪽(입력) 필드를 병합rightonly: 왼쪽에 일치하는 키가 없는 오른쪽 레코드만 출력cross: 양쪽 레코드의 카르테시안 곱을 출력. 조인 키를 지정하지 않음full: 양쪽 레코드를 모두 출력하고, 조인 키가 일치하면 필드를 병합
대상
FIELD, ...- 조인 키 필드. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다.cross조인에서는 지정하지 않습니다. [ SUBQUERY ]- 대괄호(
[])로 감싼 서브 쿼리. 서브 쿼리 결과가 오른쪽 데이터셋으로 사용됩니다.
입력 필드
없음 (조인 키 필드를 입력 레코드에서 읽지만 특정 필드명을 강제하지 않음)
출력 필드
없음 (입력 데이터에 따라 동적으로 결정)
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 20500 | 지원되지 않는 조인 방식입니다. inner, left, leftonly, right, rightonly, cross, full 중 하나를 사용하세요. | 지원되지 않는 조인 유형을 지정한 경우 |
| 20501 | 조인 키를 지정하세요. | 조인 키 필드가 지정되지 않은 경우 |
런타임 오류
해당 사항 없음
설명
join 명령어는 입력 레코드(왼쪽)와 서브 쿼리 결과(오른쪽)를 조인 키 기준으로 병합합니다. 서브 쿼리가 먼저 실행되고, 서브 쿼리 결과 건수가 100,000건 이하이면 해시 조인, 초과하면 소트-머지 조인을 사용합니다.
조인 키 필드 앞에 + 또는 - 기호를 붙이면 소트-머지 조인을 강제하고, 해당 필드의 정렬 순서를 지정합니다.
스트림 쿼리에서는 join 명령어를 사용할 수 없으므로 streamjoin 명령어를 사용해야 합니다.
분산 환경에서는 분석 노드에서 조인을 수행합니다.
해시 조인 임계값 기본값은 100,000건이며, 시스템 프로퍼티 araqne.hashjointhreshold로 변경할 수 있습니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
내부 조인 — 웹 로그에 호스트명 정보 병합
table WEB_APACHE_SAMPLE | stats count by src_ip | join src_ip [ json "[{'src_ip': '192.0.2.1', 'hostname': 'web-01'}, {'src_ip': '192.0.2.2', 'hostname': 'web-02'}]" ]WEB_APACHE_SAMPLE테이블에서 IP별 요청 건수를 집계하고,src_ip필드를 기준으로 내부 조인하여 호스트명 정보를 병합합니다. 서브 쿼리의 IP와 일치하는 레코드만 출력됩니다. -
왼쪽 조인 — 매칭 여부와 무관하게 전체 웹 로그 유지
table WEB_APACHE_SAMPLE | stats count by src_ip | join type=left src_ip [ json "[{'src_ip': '192.0.2.1', 'hostname': 'web-01'}]" ]왼쪽(웹 로그) 레코드를 모두 출력하고, 일치하는 오른쪽 필드를 병합합니다. 서브 쿼리에 일치하는 IP가 없는 레코드도 출력되지만
hostname필드가 없습니다. -
왼쪽 전용 조인 — 허용 목록에 없는 IP 탐지
table WEB_APACHE_SAMPLE | stats count by src_ip | join type=leftonly src_ip [ json "[{'src_ip': '192.0.2.1'}, {'src_ip': '192.0.2.2'}]" ]허용 목록(
json인라인 데이터)에 없는 IP의 웹 로그 집계 결과만 출력합니다. -
크로스 조인
json "[{'method': 'GET'}, {'method': 'POST'}]" | join type=cross [ json "[{'status': 200}, {'status': 404}]" ]양쪽 레코드의 모든 조합을 출력합니다. 총 4건의 레코드가 출력됩니다.
-
여러 조인 키 사용
table WEB_APACHE_SAMPLE | join src_ip, status [ json "[{'src_ip': '192.0.2.1', 'status': 200, 'region': 'kr'}, {'src_ip': '192.0.2.2', 'status': 404, 'region': 'us'}]" ]src_ip와status두 필드를 조인 키로 사용하여 지역 정보를 병합합니다.
호환성
join 명령어는 소나 4.0 이전 버전부터 제공되었습니다.