Поиск несоответствующих строк с Power Query в Power BI
Поиск строк, которые находятся в одной таблице, но не другой, является одним из наиболее распространенных сценариев, происходящих в любых приложениях, связанных с данными. У вас могут быть записи клиентов, поступающие из двух источников, и вы хотите найти строки данных, которые существуют в одном, но не существуют в другом. В Power Query вы можете использовать Merge для объединения таблиц данных. Слияние может также использоваться для поиска записей несоответствия. В этом блоге вы узнаете, как в Power Query вы можете узнать, какие записи отсутствуют в Merge, а затем отправить их в Power BI.
Пример таблиц данных
В этом примере у нас есть две таблицы клиентов; одна таблица поступающая с веб-сайта, а другая - поступающая из приложения. Вот таблица клиентов с веб-сайта:
А вот другая таблица, поступающая из приложения.
Таблица клиентов с веб-сайта имеет поле адреса электронной почты плюс имя и CustomerKey. В таблице, представленной в приложении, есть поля, такие как дата рождения, пол и семейное положение, а также имя и ключ клиента. Поле ссылки в этом сценарии - CustomerKey. Оно существует в обеих таблицах.
Слияние в Power Query
Раньше мы рассказывали о том, что такое Merge, и чем оно отличается от Append. Мы также рассказывали о разных типах Merge Kind. В этом примере вы можете найти пару таких типов соединений; Left Anti Join и Right Anti Join. В следующем примере Power Query мы читаем данные из обеих таблиц, и мы объединяем их:
Left Anti Join: записи только в первой таблице
Когда мы объединяем эти два запроса, мы выбираем Left Anti Join, который дает нам строки, которые существуют только в первой таблице (таблица клиентов из приложения):
Это даст вам только строки, которые существуют в первой таблице «Таблица клиентов из приложения»
Затем вы можете удалить последний столбец вывода, потому что значение таблицы не будет содержать никаких строк (это строки несоответствия)
Right Anti Join: записи только во второй таблице
Тот же подход может использоваться для строк, которые существуют только во второй таблице, используя Right Anti Join
Но Right Anti Join даст вам результат, который будет выглядеть немного странным, если вы не расширяете таблицу:
Вам НЕОБХОДИМО развернуть таблицу для второго запроса, чтобы получить строки несоответствия, когда вы используете Right Anti Join. что является дополнительным шагом, но все равно отлично работает. Вы можете удалить все столбцы из первой таблицы и развернуть последний столбец;
Left Anti с изменением порядка таблиц. Работает аналогично Right Anti
Или, альтернативно, вы можете переключить порядок таблиц во время Merge и использовать Left Anti join для получения того же вывода;
Результат здесь аналогичен тому, что мы делали ранее (он дает вам записи только во второй таблице «клиенты с сайта»):
Резюме
Таким образом, этот пост был посвящен двум наименее распространенным типам соединений в Power Query; Left Anti join и Right Anti join. Эти два типа соединений очень полезны, когда вы хотите найти записи, которые существуют в одной из таблиц, но не в другой. Все, что вам нужно - это выбрать правильный порядок таблиц и тип слияния в графическом интерфейсе команды Merge.