join 연산자

두 테이블의 행을 병합하여 각 테이블에서 지정된 열의 값을 일치시키는 방식으로 새 테이블을 만듭니다.

KQL(Kusto 쿼리 언어)은 각각 다른 방식으로 결과 테이블의 스키마 및 행에 영향을 주는 다양한 종류의 조인을 제공합니다. 예를 들어 조인을 inner 사용하는 경우 테이블에 왼쪽 테이블과 동일한 열과 오른쪽 테이블의 열이 있습니다. 최상의 성능을 위해 한 테이블이 항상 다른 테이블보다 작으면 해당 테이블을 join 연산자의 왼쪽으로 사용합니다.

다음 이미지는 각 조인에서 수행하는 작업의 시각적 표현을 제공합니다.

쿼리 조인 종류를 보여주는 다이어그램

Syntax

LeftTable|join [ kind=JoinFlavor ] [ 힌트 ] (RightTable)on조건

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 형식 필수 Description
LeftTable string ✔️ 행을 병합할 외부 테이블이라고도 하는 왼쪽 테이블 또는 테이블 형식 식입니다. $left로 표시됩니다.
JoinFlavor string 수행할 조인 유형: innerunique, , inner, leftouterrightouter, fullouter, leftanti, rightanti, , . leftsemirightsemi 기본값은 innerunique입니다. 조인 버전에 대한 자세한 내용은 반환을 참조 하세요.
힌트 string 행 일치 작업 및 실행 계획의 동작을 제어하는 이름= 형식의 공백으로 구분된 조인 힌트가 0개 이상 있습니다. 자세한 내용은 힌트를 참조하세요.
RightTable string ✔️ 행을 병합할 내부 테이블이라고도 하는 올바른 테이블 또는 테이블 형식 식입니다. $right로 표시됩니다.
조건 string ✔️ LeftTable의 행을 RightTable의 행과 일치시킬 방법을 결정합니다. 일치하려는 열의 이름이 두 테이블 모두에 같은 경우 ColumnName 구문을 ON 사용합니다. 그렇지 않으면 LeftColumnRightColumn==$right. 구문을 ON $left. 사용합니다. 여러 조건을 지정하려면 "and" 키워드(keyword) 사용하거나 쉼표로 구분할 수 있습니다. 쉼표로 사용하는 경우 조건은 "and" 논리 연산자를 사용하여 평가됩니다.

최상의 성능을 위해 한 테이블이 항상 다른 테이블보다 작은 경우 조인의 왼쪽으로 사용합니다.

힌트

힌트 키 설명
hint.remote auto, left, local, right 클러스터 간 조인 참조
hint.strategy=broadcast 클러스터 노드에서 쿼리 로드를 공유하는 방법을 지정합니다. 브로드캐스트 조인 참조
hint.shufflekey=<key> 쿼리는 shufflekey 키를 사용하여 데이터를 분할하는 클러스터 노드의 쿼리 로드를 공유합니다. 순서 섞기 쿼리 참조
hint.strategy=shuffle 전략 쿼리는 shuffle 각 노드가 데이터의 한 파티션을 처리하는 클러스터 노드의 쿼리 로드를 공유합니다. 순서 섞기 쿼리 참조
Name 설명
hint.remote auto, left, local, right
hint.strategy=broadcast 클러스터 노드에서 쿼리 로드를 공유하는 방법을 지정합니다. 브로드캐스트 조인 참조
hint.shufflekey=<key> 쿼리는 shufflekey 키를 사용하여 데이터를 분할하는 클러스터 노드의 쿼리 로드를 공유합니다. 순서 섞기 쿼리 참조
hint.strategy=shuffle 전략 쿼리는 shuffle 각 노드가 데이터의 한 파티션을 처리하는 클러스터 노드의 쿼리 로드를 공유합니다. 순서 섞기 쿼리 참조

참고

조인 힌트는 의 의미 체계 join 를 변경하지 않지만 성능에 영향을 줄 수 있습니다.

반환

반환 스키마 및 행은 조인 버전에 따라 달라집니다. 조인 맛은 키워드(keyword) 종류로 지정됩니다. 다음 표에서는 지원되는 조인 버전을 보여 줍니다. 특정 조인 버전에 대한 예제를 보려면 조인 버전 열에서 링크를 선택합니다.

조인 특징 반환 그림
innerunique (기본값) 왼쪽 중복 제거를 사용하는 내부 조인
스키마: 일치하는 키를 포함하여 두 테이블의 모든 열
: 왼쪽 테이블의 중복 제거된 모든 행이 오른쪽 테이블의 행과 일치
내부 표준 내부 조인
스키마: 일치하는 키를 포함하여 두 테이블의 모든 열
: 두 테이블에서 일치하는 행만
leftouter 왼쪽 우선 외부 조인
스키마: 일치하는 키를 포함하여 두 테이블의 모든 열
: 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 행만
rightouter 오른쪽 우선 외부 조인
스키마: 일치하는 키를 포함하여 두 테이블의 모든 열
: 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 행만
fullouter 완전 외부 조인
스키마: 일치하는 키를 포함하여 두 테이블의 모든 열
: 일치하지 않는 셀이 null로 채워진 두 테이블의 모든 레코드
leftsemi 왼쪽 우선 세미 조인
스키마: 왼쪽 테이블의 모든 열
: 오른쪽 테이블의 레코드와 일치하는 왼쪽 테이블의 모든 레코드
leftanti, anti, leftantisemi 왼쪽 안티 조인 및 세미 변형
스키마: 왼쪽 테이블의 모든 열
: 오른쪽 테이블의 레코드와 일치하지 않는 왼쪽 테이블의 모든 레코드
rightsemi 오른쪽 우선 세미 조인
스키마: 오른쪽 테이블의 모든 열
: 왼쪽 테이블의 레코드와 일치하는 오른쪽 테이블의 모든 레코드
rightanti, rightantisemi 오른쪽 안티 조인 및 세미 변형
스키마: 오른쪽 테이블의 모든 열
: 왼쪽 테이블의 레코드와 일치하지 않는 오른쪽 테이블의 모든 레코드

크로스 조인

KQL은 교차 조인 버전을 제공하지 않습니다. 그러나 자리 표시자 키 접근 방식을 사용하여 교차 조인 효과를 얻을 수 있습니다.

다음 예제에서는 자리 표시자 키가 두 테이블에 추가된 다음 내부 조인 작업에 사용되어 조인 간 동작을 효과적으로 수행합니다.

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder