適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
クラスター間結合には、異なるクラスターに存在するデータセットからのデータの結合が含まれます。
クロスクラスター結合では、クエリは 3 つの可能な場所で実行できます。それぞれ、このドキュメント全体を通して参照するための特定の指定があります。
- ローカル クラスター: 要求の送信先となるクラスター。これは、コンテキストでデータベースをホストするクラスターとも呼ばれます。
- 左のクラスター: 結合操作の左側でデータをホストしているクラスター。
- 右側のクラスター: 結合操作の右側でデータをホストしているクラスター。
クエリを実行するクラスターは、他のクラスターからデータをフェッチします。
Note
結合操作の左側と右側のデータが同じクラスターでホストされている場合、データがローカル クラスターの外部でホストされている場合でも、クラスター間の結合とは見なされません。
構文
[ cluster(ClusterName).database(DatabaseName).]LeftTable| ...
|
join [ hint.remote=Strategy ](
[ cluster(ClusterName).database(DatabaseName).]RightTable| ...
) on Conditions
構文規則について詳しく知る。
パラメーター
| 件名 | タイプ | Required | 説明 |
|---|---|---|---|
| LeftTable | string |
✔️ | 行をマージする左のテーブルまたは表形式の式。
$left と示されます。 |
| 戦略 | string |
結合を実行するクラスターを決定します。 サポートされている値: left、right、local、auto。 詳細については、「 Strategies」を参照してください。 |
|
| ClusterName | string |
結合のデータがローカル クラスターの外部にある場合は、 cluster() 関数を使用してクラスターを指定します。 | |
| DatabaseName | string |
結合のデータがローカル データベース コンテキストの外部にある場合は、 database() 関数を使用してデータベースを指定します。 | |
| RightTable | string |
✔️ | 行をマージする右のテーブルまたは表形式の式。
$right と示されます。 |
| 条件 | string |
✔️ |
LeftTable の行を RightTable の行と照合する方法を指定します。 一致する列の名前が両方のテーブルで同じである場合は、構文 ONColumnName を使用します。 それ以外の場合は、構文 ON $left.LeftColumn==$right.RightColumn を使用します。 複数の条件を指定するには、"and" キーワードを使用するか、コンマで区切ります。 コンマを使用する場合、条件は "and" 論理演算子を使用して評価されます。 |
方法
次の一覧では、 Strategy パラメーターでサポートされている値について説明します。
-
left: 左側のテーブルまたは左側のクラスターのクラスターで結合を実行します。 -
right: 適切なテーブルまたは適切なクラスターのクラスターで結合を実行します。 -
local: 現在のクラスターまたはローカル クラスターのクラスターで結合を実行します。 -
auto: (既定) Kusto がリモート処理を決定します。
Note
ヒント付き戦略が結合操作に適用できない場合、結合リモート処理ヒントは無視されます。
自動戦略のしくみ
既定では、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