Оператор join
Узнайте, как объединить строки двух таблиц для формирования новой таблицы путем сопоставления значений указанных столбцов каждой таблицы.
язык запросов Kusto (KQL) предлагает множество типов соединений, каждое из которых по-разному влияет на схему и строки в результирующей таблице. Например, если вы используете inner
соединение, таблица содержит те же столбцы, что и левая таблица, а также столбцы из правой таблицы. Для оптимальной производительности, если одна таблица всегда меньше другой, используйте ее в качестве левой join
части оператора.
На следующем рисунке представлено визуальное представление операции, выполняемой каждым соединением.
Синтаксис
Леваяtable|
join
[ kind
=
JoinFlavor ] [ Hints ] (
RightTable)
on
Conditions
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
LeftTable | string |
✔️ | Левая таблица или табличное выражение, иногда называемое внешней таблицей, строки которой должны быть объединены. Обозначается как $left . |
JoinFlavor | string |
Тип соединения для выполнения: innerunique , inner , leftouter , rightouter , fullouter , leftanti , rightanti , , leftsemi . rightsemi Значение по умолчанию — innerunique . Дополнительные сведения о вариантах соединения см. в разделе Returns. |
|
Указания | string |
Ноль или более указаний соединения с разделителями пробелами в виде значения имени= , которые управляют поведением операции сопоставления строк и плана выполнения. Дополнительные сведения см. в разделе Подсказки. |
|
RightTable | string |
✔️ | Правильная таблица или табличное выражение, иногда называемое внутренней таблицей, строки которой должны быть объединены. Обозначается как $right . |
Условия | string |
✔️ | Определяет, как строки из LeftTable сопоставляются со строками из RightTable. Если столбцы, которые нужно сопоставить, имеют одинаковые имена в обеих таблицах, используйте синтаксис ON ColumnName. В противном случае используйте синтаксис ON $left. LeftColumn== $right. RightColumn. Чтобы указать несколько условий, можно использовать ключевое слово "и" или разделять их запятыми. Если используются запятые, условия вычисляются с помощью логического оператора "и". |
Совет
Для оптимальной производительности, если одна таблица всегда меньше другой, используйте ее в качестве левой части соединения.
Указания
Клавиша подсказки | Значения | Описание |
---|---|---|
hint.remote |
auto , left , local , right |
См. статью Межкластерный оператор join. |
hint.strategy=broadcast |
Указывает способ совместного использования нагрузки запросов на узлы кластера. | См . статью о присоединении к широковещател |
hint.shufflekey=<key> |
Запрос shufflekey распределяет нагрузку на узлы кластера, используя ключ для секционирования данных. |
См. статью о запросе на перемешивание |
hint.strategy=shuffle |
Стратегический shuffle запрос распределяет нагрузку запросов на узлы кластера, где каждый узел обрабатывает одну секцию данных. |
См. статью о запросе на перемешивание |
Имя | Значения | Описание |
---|---|---|
hint.remote |
auto , left , local , right |
|
hint.strategy=broadcast |
Указывает способ совместного использования нагрузки запросов на узлы кластера. | См . статью о присоединении к широковещател |
hint.shufflekey=<key> |
Запрос shufflekey распределяет нагрузку на узлы кластера, используя ключ для секционирования данных. |
См. статью о запросе на перемешивание |
hint.strategy=shuffle |
Стратегический shuffle запрос распределяет нагрузку запросов на узлы кластера, где каждый узел обрабатывает одну секцию данных. |
См. статью о запросе на перемешивание |
Примечание
Указания соединения не изменяют семантику , join
но могут повлиять на производительность.
Возвращаемое значение
Возвращаемая схема и строки зависят от варианта соединения. Вариант соединения указывается с типом ключевое слово. В следующей таблице показаны поддерживаемые варианты соединения. Чтобы просмотреть примеры для определенного варианта соединения, щелкните ссылку в столбце Вариант соединения .
Вариант оператора join | Возвращаемое значение | Иллюстрация |
---|---|---|
innerunique (по умолчанию) | Внутреннее соединение с удалением дубликатов в левой части Схема: все столбцы из обеих таблиц, включая соответствующие ключи. Строки: все дедуплицированные строки из левой таблицы, соответствующие строкам из правой таблицы. |
|
Внутренний | Стандартное внутреннее соединение Схема: все столбцы из обеих таблиц, включая соответствующие ключи. Строки: только совпадающие строки из обеих таблиц |
|
leftouter | левое внешнее соединение. Схема: все столбцы из обеих таблиц, включая соответствующие ключи. Строки: все записи из левой таблицы и только соответствующие строки из правой таблицы. |
|
rightouter | Правое внешнее соединение Схема: все столбцы из обеих таблиц, включая соответствующие ключи. Строки: все записи из правой таблицы и только соответствующие строки из левой таблицы. |
|
fullouter | Полное внешнее соединение Схема: все столбцы из обеих таблиц, включая соответствующие ключи. Строки: все записи из обеих таблиц с несовпаденными ячейками, заполненными значением NULL. |
|
leftsemi | Левое полусоединение Схема: все столбцы из левой таблицы Строки: все записи из левой таблицы, соответствующие записям из правой таблицы. |
|
leftanti , anti , leftantisemi |
Левое антисоединяние и полуварийное соединение Схема: все столбцы из левой таблицы Строки: все записи из левой таблицы, которые не соответствуют записям из правой таблицы. |
|
rightsemi | Правое полусоединение Схема: все столбцы из правой таблицы Строки: все записи из правой таблицы, соответствующие записям из левой таблицы. |
|
rightanti , rightantisemi |
Правое антисоединяние и полуварийное соединение Схема: все столбцы из правой таблицы Строки: все записи из правой таблицы, которые не совпадают с записями из левой таблицы. |
Перекрестное соединение
KQL не предоставляет вариант перекрестного соединения. Однако вы можете достичь эффекта перекрестного соединения, используя подход к ключу заполнителя.
В следующем примере ключ заполнителя добавляется в обе таблицы, а затем используется для операции внутреннего соединения, что эффективно достигает поведения, подобного перекрестному соединению:
X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по