Левая защита от соединения
Один из типов соединения, доступных в диалоговом окне слияния в Power Query, — это левое анти соединение, которое содержит только строки из левой таблицы, не имеющие совпадающих строк из правой таблицы. Дополнительные сведения: обзор операций слияния
На схеме показана левая таблица с столбцами Date, CountryID и Units. Выделенный столбец CountryID содержит значения 1 в строках 1 и 2, 3 в строке 3 и 2 в строке 4. В правой таблице содержатся столбцы ID и Country. Выделенный столбец идентификатора содержит значения 3 в строке 1 (обозначающая Панаму) и 4 в строке 2 (обозначающая Испанию). Таблица под первой таблицей содержит столбцы Date, CountryID, Units и Country. В таблице есть три строки с двумя строками, содержащими данные для CountryID 1, а также одну строку для CountryID 2. Так как ни один из оставшихся идентификаторов CountryID не соответствует ни одному из стран или регионов в правой таблице, строки в столбце "Страна" в объединенной таблице все содержат значение NULL.
В этой статье используются примеры данных, чтобы показать, как выполнить операцию слияния с левым антиприсоединения. Примеры исходных таблиц для этого примера:
Продажи: эта таблица содержит поля Date, CountryID и Units. CountryID — это целое число, представляющее уникальный идентификатор из таблицы "Страны ".
Страны: эта таблица представляет собой справочную таблицу с идентификатором полей и страной. Поле идентификатора представляет уникальный идентификатор для каждой записи.
В этом примере вы объединяете обе таблицы с таблицей Sales в виде левой таблицы и таблицы "Страны " в качестве правой. Соединение выполняется между следующими столбцами.
Поле из таблицы Sales | Поле из таблицы "Страны" |
---|---|
ИДстраны | Идентификатор |
Цель — создать таблицу, как показано ниже, где хранятся только строки из левой таблицы, которые не соответствуют ни одному из правой таблицы.
Снимок экрана: левая таблица защиты от соединения с заголовками столбцов Date, CountryID, Units и Country и тремя строками данных, в которых значения столбца "Страна" имеют значение NULL.
Чтобы выполнить левое анти соединение, сделайте:
- Выберите запрос "Продажи" и выберите "Объединить запросы".
- В диалоговом окне "Слияние" в правой таблице для слияния выберите "Страны".
- В таблице Sales выберите столбец CountryID.
- В таблице "Страны" выберите столбец идентификатора.
- В разделе "Тип соединения" выберите "Левая защита".
- Нажмите ОК.
Совет
Ознакомьтесь с сообщением в нижней части диалогового окна с надписью "Выбор выбирает 3 из 4 строк из первой таблицы". Это сообщение имеет решающее значение для понимания результата, полученного из этой операции.
В таблице Sales есть два экземпляра CountryID 1 и один экземпляр CountryID 2, но ни один из них не найдены в таблице "Страны". Поэтому совпадение найдено три из четырех строк в левой (первой) таблице.
В таблице "Страны" у вас есть страна Панама с идентификатором 3, чтобы запись не была доставлена в таблицу Продаж, так как номера совпадают. Кроме того, у вас есть страна Испания с идентификатором 4, но нет записей для CountryID 4 в таблице Sales. Поэтому ни одна из двух строк из правой (второй) таблицы не вставляется в таблицу Sales .
В созданном столбце "Страны" разверните поле "Страна ". Не установите флажок "Использовать исходное имя столбца" в качестве префикса .
После выполнения этой операции вы создали таблицу, которая выглядит следующим образом. Только что развернутое поле "Страна" не имеет никаких значений, так как левое анти-соединение не приносит никаких значений из правой таблицы. Она сохраняет строки только из левой таблицы.
Снимок экрана: окончательная таблица с заголовками столбцов Date, CountryID, Units и Country и тремя строками данных. Значения столбца "Страна" имеют значение NULL.