Использование оператора 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 позволяют различать, на какие столбцы таблиц вы ссылаетесь.

При объединении таблиц используются варианты объединения, чтобы определить поведение объединения. Очень важно понимать влияние записей на левую и правую части с учетом варианта объединения. На рисунке ниже показано, какие записи будут сохранены в зависимости от того, есть ли в другом наборе данных совпадающая запись. Внутреннее соединение будет отображать только записи с левой стороны, если в правой части есть совпадающая запись. В правой части также потребуется запись с левой стороны.

Diagram of Example join types, showing where how joins work.

Вариант оператора 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.