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