join 演算子を使用する
join 演算子は、指定した各テーブルの列値を照合して、2 つのテーブル行数を結合し、新しいテーブルを作成します。
構文
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
結合で指定した最初のテーブルが、左テーブルと見なされます。 join キーワードの後のテーブルが右テーブルです。 各テーブルからの列にはそれぞれ $left.Column
と $right.Column
が指定され、これにより、どのテーブルの列を参照しているのかが識別されます。
テーブルを結合する場合は、結合フレーバーを使用して結合の動作を決定します。 左と右側のレコードに、結合フレーバーが影響することを理解しておくことが重要です。 次の図は、もう一方のデータセットに、一致するレコードが存在する場合または存在しない場合、どのレコードが保持されるかを示しています。 内部結合では、右側に一致するレコードがある場合、左側のレコードのみを表示します。 右側でも、左側のレコードが必要です。
結合フレーバー | 出力されるレコード |
---|---|
kind=leftanti、kind=leftantisemi | 右側に一致するものがない、左側のすべてのレコードが返されます。 |
kind=rightanti、kind=rightantisemi | 左側に一致するものがない、右側のすべてのレコードが返されます。 |
kind 未指定、kind=innerunique | 左側の 1 つの行のみが on キーの各値に対して照合されます。 出力には、右の行のこの行と一致するそれぞれの行が含まれます。 |
kind=leftsemi | 右側に一致するものがある、左側のすべてのレコードが返されます。 |
kind=rightsemi | 左側に一致するものがある、右側のすべてのレコードが返されます。 |
kind=inner | 出力には、左右の一致する行のすべての組み合わせに対応する行が含まれます。 |
kind=leftouter (または kind=rightouter または kind=fullouter) | 一致するものがない場合も含めて、左右のすべての行に対応する行が含まれます。 一致しない出力セルには null が含まれます。 |