共用方式為


join 運算子

適用於:✅Microsoft網狀架構Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel

藉由比對每個數據表中指定數據行的值,合併兩個數據表的數據列,以形成新的數據表。

Kusto 查詢語言 (KQL) 提供許多種類的聯結,每個聯結都會以不同的方式影響結果數據表中的架構和數據列。 例如,如果您使用聯結 inner ,數據表的數據行與左數據表相同,加上右數據表中的數據行。 為獲得最佳效能,如果某個資料表勢必會小於另一個資料表,請將其做為 join 運算子的左側。

下圖提供每個聯結所執行作業的視覺表示法。 底紋的色彩代表傳回的數據行,而陰影的區域則代表傳回的數據列。

圖表顯示查詢聯結種類。

語法

LeftTable | join [ = kind JoinFlavor ] [ 提示 ]( RightTable 條件) on

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
LeftTable string ✔️ 左數據表或表格式表示式,有時稱為外部數據表,其數據列要合併。 表示為 $left
JoinFlavor string 要執行的聯結類型:innerunique、、、innerleftouterrightouterfullouter、、rightantileftantileftsemirightsemi。 預設值為 innerunique。 如需聯結類別的詳細資訊,請參閱 傳回
提示 string 以 Name = Value 的形式,控制數據列比對作業和執行計劃的行為,以零或多個空格分隔聯結提示。 如需詳細資訊,請參閱 提示
RightTable string ✔️ 右數據表或表格式表示式,有時稱為內部數據表,其數據列要合併。 表示為 $right
條件 string ✔️ 決定 LeftTable 中的數據列如何與 RightTable 中的數據列相符。 如果您想要比對的數據行在這兩個數據表中具有相同的名稱,請使用語法 ON ColumnName。 否則,請使用 LeftColumn RightColumn 語法。$right.==ON $left. 若要指定多個條件,您可以使用 「and」 關鍵詞,或使用逗號分隔它們。 如果您使用逗號,則會使用 「and」 邏輯運算符來評估條件。

提示

為了獲得最佳效能,如果一個數據表一律小於另一個數據表,請使用它做為聯結的左側。

提示

提示索引鍵 描述
hint.remote auto、 、 leftlocalright 請參閱 跨叢集聯結
hint.strategy=broadcast 指定在叢集節點上共用查詢負載的方式。 請參閱 廣播聯結
hint.shufflekey=<key> 查詢 shufflekey 會使用索引鍵來分割數據,在叢集節點上共用查詢負載。 請參閱 隨機查詢
hint.strategy=shuffle 策略 shuffle 查詢會共用叢集節點上的查詢負載,其中每個節點都會處理數據的一個分割區。 請參閱 隨機查詢
名稱 描述
hint.remote auto、 、 leftlocalright
hint.strategy=broadcast 指定在叢集節點上共用查詢負載的方式。 請參閱 廣播聯結
hint.shufflekey=<key> 查詢 shufflekey 會使用索引鍵來分割數據,在叢集節點上共用查詢負載。 請參閱 隨機查詢
hint.strategy=shuffle 策略 shuffle 查詢會共用叢集節點上的查詢負載,其中每個節點都會處理數據的一個分割區。 請參閱 隨機查詢

注意

聯結提示不會變更 的 join 語意,但可能會影響效能。

傳回

傳回架構和數據列取決於聯結類別。 聯結類別是以 kind 關鍵詞指定。 下表顯示支持的聯結口味。 若要查看特定聯結類別的範例,請選取 [ 聯結類別 ] 數據行中的連結。

聯結類別 傳回 範例說明
innerunique (預設值) 內部聯結與左側重複資料刪除
結構描述:這兩個資料表中的所有資料行,包括相符的索引鍵
資料列:左資料表中所有重復資料刪除的資料列都符合右資料表的資料列
inner 標準內部聯結
結構描述:這兩個資料表中的所有資料行,包括相符的索引鍵
資料列:僅限兩個資料表中相符的資料列
leftouter 左方外部聯結
結構描述:這兩個資料表中的所有資料行,包括相符的索引鍵
資料列:左資料表中的所有記錄,而且只包含右資料表中相符的資料列
rightouter 右方外部聯結
結構描述:這兩個資料表中的所有資料行,包括相符的索引鍵
資料列:右資料表中的所有記錄,而且只包含左資料表中相符的資料列
fullouter 完整外部聯結
結構描述:這兩個資料表中的所有資料行,包括相符的索引鍵
資料列:兩個資料表中的所有記錄,其中不相符的儲存格填入了 null
leftsemi 左方半聯結
結構描述:左資料表中的所有資料行
資料列:左資料表中的所有記錄符合右資料表的記錄
leftanti、 、 antileftantisemi 左方反向聯結和半變異
結構描述:左資料表中的所有資料行
資料列:左資料表中的所有記錄不符合右資料表的記錄
rightsemi 右方半聯結
結構描述:右資料表中的所有資料行
資料列:右資料表中的所有記錄符合左資料表的記錄
rightanti, rightantisemi 右方反向聯結和半變異
結構描述:右資料表中的所有資料行
資料列:右資料表中的所有記錄不符合左資料表的記錄

交叉聯結

KQL 不提供交叉聯結的類別。 不過,您可以使用佔位元元索引鍵方法來達成交叉聯結效果。

在下列範例中,佔位元索引鍵會新增至兩個數據表,然後用於內部聯結作業,有效地達到類似交叉聯結的行為:

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder