使用聯結運算子
聯結運算子透過比對每個資料表中所指定資料行的值,來合併兩個資料表的資料列,以形成新的資料表。
語法
LeftTable | join [JoinParameters] ( RightTable ) on Attributes
SecurityEvent
| where EventID == "4624"
| summarize LogOnCount=count() by EventID, Account
| project LogOnCount, Account
| join kind = inner (
SecurityEvent
| where EventID == "4634"
| summarize LogOffCount=count() by EventID, Account
| project LogOffCount, Account
) on Account
聯結中指定的第一個資料表會被視為左側資料表。 聯結關鍵字後面的資料表則是右側資料表。 之所以要將資料表中的資料行指定為 $left.Column
與 $right.Column
,是為了便於區別您在資料表中參考的資料行。
聯結資料表時,您可以使用聯結變體來決定聯結行為。 請務必根據聯結變體,了解記錄對左側和右側資料行的影響。 下圖顯示當其他資料集中有或沒有相符的記錄,系統會保留哪些記錄。 如果右側有相符的記錄,則內部聯結只會顯示左側的記錄。 右側也需要左側記錄。
聯結變體 | 輸出記錄 |
---|---|
kind=leftanti, kind=leftantisemi | 從左邊傳回沒有相符專案的所有記錄 |
kind=rightanti, kind=rightantisemi | 從右側傳回沒有相符專案的所有記錄。 |
kind 為指定,kind=innerunique | On 索引鍵的各個值都只會比對左側的一個資料列。 此資料列與右側資料列的每個相符項目都會在輸出中佔有一個資料列 |
kind=leftsemi | 從左側傳回具有右側相符專案的所有記錄。 |
kind=rightsemi | 從右側傳回具有左側相符專案的所有記錄。 |
kind=inner | 針對從左到右相符數據列的每個組合,在輸出中包含一個數據列。 |
kind=leftouter (或 kind=rightouter 或 kind=fullouter) | 包含左右每個數據列的數據列,即使它沒有相符專案也一樣。 不相符的輸出儲存格包含 Null。 |