join 연산자
두 테이블의 행을 병합하여 각 테이블에서 지정된 열의 값을 일치시키는 방식으로 새 테이블을 만듭니다.
KQL(Kusto 쿼리 언어)은 각각 다른 방식으로 결과 테이블의 스키마 및 행에 영향을 주는 다양한 종류의 조인을 제공합니다. 예를 들어 조인을 inner
사용하는 경우 테이블에 왼쪽 테이블과 동일한 열과 오른쪽 테이블의 열이 있습니다. 최상의 성능을 위해 한 테이블이 항상 다른 테이블보다 작으면 해당 테이블을 join
연산자의 왼쪽으로 사용합니다.
다음 이미지는 각 조인에서 수행하는 작업의 시각적 표현을 제공합니다.
Syntax
LeftTable|
join
[ kind
=
JoinFlavor ] [ 힌트 ] (
RightTable)
on
조건
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | 형식 | 필수 | Description |
---|---|---|---|
LeftTable | string |
✔️ | 행을 병합할 외부 테이블이라고도 하는 왼쪽 테이블 또는 테이블 형식 식입니다. $left 로 표시됩니다. |
JoinFlavor | string |
수행할 조인 유형: innerunique , , inner , leftouter rightouter , fullouter , leftanti , rightanti , , . leftsemi rightsemi 기본값은 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
관련 콘텐츠
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기