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


Левая защита от соединения

Один из типов соединения, доступных в диалоговом окне слияния в 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 — это целое число, представляющее уникальный идентификатор из таблицы "Страны ".

    Снимок экрана: таблица продаж, содержащая столбцы Date, CountryID и Units, с идентификатором countryID, равным 1 в строках 1 и 2, 3 в строке 3 и 2 в строке 4.

  • Страны: эта таблица представляет собой справочную таблицу с идентификатором полей и страной. Поле идентификатора представляет уникальный идентификатор для каждой записи.

    Снимок экрана: таблица стран с идентификатором, равным 3 в строке 1 и 4 в строке 2 и страна, в строке 1 и Испании в строке 2.

В этом примере вы объединяете обе таблицы с таблицей Sales в виде левой таблицы и таблицы "Страны " в качестве правой. Соединение выполняется между следующими столбцами.

Поле из таблицы Sales Поле из таблицы "Страны"
ИДстраны Идентификатор

Цель — создать таблицу, как показано ниже, где хранятся только строки из левой таблицы, которые не соответствуют ни одному из правой таблицы.

Левая таблица защиты от соединения.

Снимок экрана: левая таблица защиты от соединения с заголовками столбцов Date, CountryID, Units и Country и тремя строками данных, в которых значения столбца "Страна" имеют значение NULL.

Чтобы выполнить левое анти соединение, сделайте:

  1. Выберите запрос "Продажи" и выберите "Объединить запросы".
  2. В диалоговом окне "Слияние" в правой таблице для слияния выберите "Страны".
  3. В таблице Sales выберите столбец CountryID.
  4. В таблице "Страны" выберите столбец идентификатора.
  5. В разделе "Тип соединения" выберите "Левая защита".
  6. Нажмите ОК.

Снимок экрана: диалоговое окно слияния с результатами предыдущей процедуры защиты от соединения слева.

Совет

Ознакомьтесь с сообщением в нижней части диалогового окна с надписью "Выбор выбирает 3 из 4 строк из первой таблицы". Это сообщение имеет решающее значение для понимания результата, полученного из этой операции.

В таблице Sales есть два экземпляра CountryID 1 и один экземпляр CountryID 2, но ни один из них не найдены в таблице "Страны". Поэтому совпадение найдено три из четырех строк в левой (первой) таблице.

В таблице "Страны" у вас есть страна Панама с идентификатором 3, чтобы запись не была доставлена в таблицу Продаж, так как номера совпадают. Кроме того, у вас есть страна Испания с идентификатором 4, но нет записей для CountryID 4 в таблице Sales. Поэтому ни одна из двух строк из правой (второй) таблицы не вставляется в таблицу Sales .

В созданном столбце "Страны" разверните поле "Страна ". Не установите флажок "Использовать исходное имя столбца" в качестве префикса .

Снимок экрана: диалоговое окно

После выполнения этой операции вы создали таблицу, которая выглядит следующим образом. Только что развернутое поле "Страна" не имеет никаких значений, так как левое анти-соединение не приносит никаких значений из правой таблицы. Она сохраняет строки только из левой таблицы.

Окончательная таблица для левого антиприсоединения.

Снимок экрана: окончательная таблица с заголовками столбцов Date, CountryID, Units и Country и тремя строками данных. Значения столбца "Страна" имеют значение NULL.