Использование оператора Join
Оператор join объединяет строки двух таблиц, чтобы сформировать новую таблицу, сопоставляя значения указанных столбцов из каждой таблицы.
Синтаксис
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
позволяют различать, на какие столбцы таблиц вы ссылаетесь.
При объединении таблиц используются варианты объединения, чтобы определить поведение объединения. Очень важно понимать влияние записей на левую и правую части с учетом варианта объединения. На рисунке ниже показано, какие записи будут сохранены в зависимости от того, есть ли в другом наборе данных совпадающая запись. Внутреннее соединение будет отображать только записи с левой стороны, если в правой части есть совпадающая запись. В правой части также потребуется запись с левой стороны.
Вариант оператора join | Выходные записи |
---|---|
kind=leftanti, kind=leftantisemi | Возвращает все записи из левой части, для которых нет соответствий в правой. |
kind=rightanti, kind=rightantisemi | Возвращает все записи из правой части, для которых нет соответствий в левой. |
kind unspecified, kind=innerunique | Для каждого значения ключа on будет сопоставлена только одна строка из левой части. Выходные данные содержат по одной строке для каждого соответствия этой строки со строками из правой части |
kind=leftsemi | Возвращает все записи из левой части с соответствиями в правой. |
kind=rightsemi | Возвращает все записи из правой части с соответствиями в левой. |
kind=inner | Содержит строку в выходных данных для каждого сочетания соответствующих строк из левой и правой частей. |
kind=leftouter (или kind=rightouter или kind=fullouter) | Содержит по одной строке для каждой строки в левой и правой частях, даже если совпадения отсутствуют. Выходные ячейки без сопоставлений имеют значения NULL. |