跨叢集聯結
跨叢集聯結牽涉到從位於不同叢集中的數據集聯結數據。
在跨叢集聯結中,查詢可以在三個可能的位置執行,每個位置都有特定的指定供本文件參考:
- 本機叢集:要求傳送至的叢集,也稱為裝載內容中資料庫的叢集。
- 左叢集:裝載聯結作業左側數據的叢集。
- 右叢集:裝載聯結作業右側數據的叢集。
執行查詢的叢集會從其他叢集擷取數據。
注意
如果聯結作業左邊和右側的數據裝載在相同的叢集中,則即使數據裝載在本機叢集外部,也不會被視為跨叢集聯結。
Syntax
[ cluster(
ClusterName).database(
DatabaseName).
]LeftTable|
...
|
join
[ hint.remote=
策略 ] (
[ cluster(
ClusterName).database(
DatabaseName).
]RightTable|
...
)
在條件上
深入瞭解 語法慣例。
參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
LeftTable | string |
✔️ | 要合併其數據列的左數據表或表格式表示式。 表示方法為 $left 。 |
策略 | string |
決定要在其中執行聯結的叢集。 支援的值為:left 、right 、local ,和 auto 。 如需詳細資訊,請參閱 策略。 |
|
ClusterName | string |
如果聯結的數據位於本機叢集外部,請使用 cluster () 函式來指定叢集。 | |
DatabaseName | string |
如果聯結的數據位於本機資料庫內容之外,請使用 database () 函式來指定資料庫。 | |
RightTable | string |
✔️ | 要合併其數據列的右數據表或表格式表示式。 表示方法為 $right 。 |
條件 | string |
✔️ | 決定 LeftTable 中的數據列如何與 RightTable 中的數據列相符。 如果您想要比對的數據行在這兩個數據表中具有相同的名稱,請使用 ColumnName 語法ON 。 否則,請使用 LeftColumn== $right. RightColumn 語法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
相關內容
Azure 監視器不支援這項功能
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應