클러스터 간 조인
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
클러스터 간 조인에는 서로 다른 클러스터에 있는 데이터 세트의 데이터를 조인하는 작업이 포함됩니다.
클러스터 간 조인에서 쿼리는 각각 이 문서 전체에서 참조할 특정 지정이 있는 세 개의 가능한 위치에서 실행할 수 있습니다.
- 로컬 클러스터: 요청이 전송되는 클러스터이며, 컨텍스트에서 데이터베이스를 호스팅하는 클러스터라고도 합니다.
- 왼쪽 클러스터: 조인 작업의 왼쪽에 있는 데이터를 호스팅하는 클러스터입니다.
- 오른쪽 클러스터: 조인 작업의 오른쪽에 있는 데이터를 호스팅하는 클러스터입니다.
쿼리를 실행하는 클러스터는 다른 클러스터에서 데이터를 가져옵니다.
참고 항목
조인 작업의 왼쪽 및 오른쪽에 있는 데이터가 동일한 클러스터에서 호스트되는 경우 데이터가 로컬 클러스터 외부에서 호스트되더라도 클러스터 간 조인으로 간주되지 않습니다.
구문
[ cluster(
ClusterName).database(
DatabaseName).
]LeftTable |
...
|
join
[ hint.remote=
전략](
[ cluster(
ClusterName).database(
DatabaseName).
]RightTable |
...
)
조건
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
LeftTable | string |
✔️ | 행을 병합할 왼쪽 테이블 또는 테이블 형식 식입니다. $left 로 표시됩니다. |
전략 | string |
조인을 실행할 클러스터를 결정합니다. 지원되는 값은 left , right , local 및 auto 입니다. 자세한 내용은 전략을 참조하세요. |
|
ClusterName | string |
조인에 대한 데이터가 로컬 클러스터 외부에 있는 경우 cluster() 함수를 사용하여 클러스터를 지정합니다. | |
DatabaseName | string |
조인에 대한 데이터가 로컬 데이터베이스 컨텍스트 외부에 있는 경우 데이터베이스() 함수를 사용하여 데이터베이스를 지정합니다. | |
RightTable | string |
✔️ | 행을 병합할 오른쪽 테이블 또는 테이블 형식 식입니다. $right 로 표시됩니다. |
조건 | string |
✔️ | LeftTable의 행을 RightTable의 행과 일치시킬 방법을 결정합니다. 일치하려는 열의 이름이 두 테이블 모두에 같은 경우 ColumnName 구문을 ON 사용합니다. 그렇지 않으면 LeftColumn RightColumn$right. == 구문을 ON $left. 사용합니다. 여러 조건을 지정하려면 "and" 키워드를 사용하거나 쉼표로 구분할 수 있습니다. 쉼표로 사용하는 경우 조건은 "and" 논리 연산자를 사용하여 평가됩니다. |
전략
다음 목록에서는 Strategy 매개 변수에 대해 지원되는 값을 설명합니다.
left
: 왼쪽 테이블 또는 왼쪽 클러스터의 클러스터에서 조인을 실행합니다.right
: 오른쪽 테이블 또는 오른쪽 클러스터의 클러스터에서 조인을 실행합니다.local
: 현재 클러스터 또는 로컬 클러스터의 클러스터에서 조인을 실행합니다.auto
: (기본값) Kusto는 원격 결정을 내립니다.
참고 항목
조인 작업에 힌트 전략을 적용할 수 없는 경우 조인 원격 힌트는 무시됩니다.
자동 전략의 작동 방식
기본적으로 전략은 auto
다음 규칙에 따라 클러스터 간 조인을 실행할 위치를 결정합니다.
- 테이블 중 하나가 로컬 클러스터에서 호스트되는 경우 조인은 로컬 클러스터에서 수행됩니다.
- 두 테이블이 모두 로컬 클러스터 외부에서 호스트되는 경우 조인은 올바른 클러스터에서 수행됩니다.
다음 예를 살펴 보십시오.
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
전략을 사용하면 auto
로컬 클러스터에서 "예제 1"이 실행됩니다. "예제 2"에서 두 클러스터가 모두 로컬 클러스터가 아닐 경우 조인은 올바른 클러스터에서 실행됩니다.
성능 고려 사항
최적의 성능을 위해 가장 큰 테이블을 포함하는 클러스터에서 쿼리를 실행하는 것이 좋습니다.
다음 예제를 다시 살펴보겠습니다.
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
"예제 1"은 로컬 클러스터에서 실행되도록 설정되어 있지만 생성된 데이터 세트가 생성된 데이터 세트 T | ...
보다 cluster("B").database("DB").T2 | ...
작으면 클러스터 B
에서 조인 작업을 실행하는 것이 더 효율적입니다. 이 경우 로컬 클러스터 대신 올바른 클러스터입니다.
다음 쿼리는 전략을 사용하여 right
이 작업을 수행합니다. right
이 전략을 사용하면 왼쪽 테이블이 로컬 클러스터에 있더라도 오른쪽 클러스터에서 조인 작업이 수행됩니다.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1