Поделиться через


соединение fullouter

Соединение fullouter объединяет эффект применения как левых, так и правых внешних соединений. Для столбцов таблицы, не имеющих соответствующей строки, результирующий набор содержит null значения. Для тех записей, которые соответствуют, в результирующем наборе создается одна строка, содержащая поля, заполненные из обеих таблиц.

Схема, показывающая, как работает соединение.

Синтаксис

LeftTable|joinkind=fullouter [ Подсказки ] Условия rightTableon

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
ЛеваяTable string ✔️ Левая таблица или табличное выражение, иногда называемое внешней таблицей, строки которой необходимо объединить. Обозначается как $left.
Указания string Нулевая или более разделенная пробелами подсказки соединения в виде значения имени=, который управляет поведением операции сопоставления строк и плана выполнения. Дополнительные сведения см. в разделе "Подсказки".
RightTable string ✔️ Правое табличное выражение или табличное выражение, иногда называемое внутренней таблицей, строки которой необходимо объединить. Обозначается как $right.
Условия string ✔️ Определяет, как строки из LeftTable сопоставляются с строками из RightTable. Если столбцы, которые вы хотите сопоставить, имеют одинаковое имя в обеих таблицах, используйте синтаксис ONColumnName. В противном случае используйте синтаксис ON $left.LeftColumn RightColumn==$right.. Чтобы указать несколько условий, можно использовать ключевое слово "и" или разделить их запятыми. При использовании запятых условия оцениваются с помощью логического оператора "и".

Совет

Для повышения производительности, если одна таблица всегда меньше другой, используйте ее в качестве левой стороны соединения.

Подсказки

Имя параметра Значения Description
hint.remote auto, , leftlocalright См. статью Межкластерный оператор join.
hint.strategy=broadcast Указывает способ совместного использования нагрузки запроса на узлы кластера. См. присоединение к широковещательной трансляции
hint.shufflekey=<key> Запрос shufflekey использует нагрузку запроса на узлы кластера, используя ключ для секционирования данных. См. запрос перемешивания
hint.strategy=shuffle Запрос shuffle стратегии использует нагрузку запроса на узлы кластера, где каждый узел обрабатывает одну секцию данных. См. запрос перемешивания

Возвраты

Схема: все столбцы из обеих таблиц, включая соответствующие ключи.
Строки: все записи из обеих таблиц с несовпадными ячейками, заполненными значением NULL.

Пример

let X = datatable(Key:string, Value1:long)
[
    'a',1,
    'b',2,
    'b',3,
    'c',4
];
let Y = datatable(Key:string, Value2:long)
[
    'b',10,
    'c',20,
    'c',30,
    'd',40
];
X | join kind=fullouter Y on Key

Выходные данные

Ключ Значение1 Key1 Значение2
б 3 б 10
б 2 б 10
c 4 c 20
c 4 c 30
d 40
a 1