Append и Merge в Power BI и Power Query

Tags: Power BI, Power Query

Комбинирование двух запросов в Power Query или Power BI является одной из самых основных и важных задач, которые вам нужно будет выполнять в большинстве сценариев подготовки данных. Существует два типа комбинирования запросов: слияние (Merge), и добавление (Append). Разработчики баз данных легко понимают разницу, но большинство пользователей Power BI не являются разработчиками. В этой статье мы объясним разницу между Merge и Append и ситуации, при которых вы должны использовать каждый из них.

Зачем комбинировать запросы?

Это может быть первый вопрос, который приходит вам на ум; Почему я должен комбинировать запросы? Ответ таков: Вы можете делать большую часть того, что хотите в одном запросе, однако сделать это быстро с сотнями шагов будет очень сложно. С другой стороны, ваши запросы могут использоваться в разных местах. Например, один из них может использоваться как таблица в модели Power BI, а также играть роль подготовки данных для другого запроса. Комбинирование запросов - большая помощь в написании более простых и лучших запросов. Мы покажем вам несколько примеров объединения запросов.

Результатом операции комбинирования по одному или нескольким запросам будет только один запрос. Вы можете найти Append или Merge в разделе Combine Queries в редакторе запросов в Power BI или в Excel.

Append

Append означает, что результаты двух (или более) запросов (которые являются самими таблицами) будут объединены в один запрос таким образом:

  • Строки будут добавляться друг к другу. (например, добавление запроса с 50 строками с другим запросом с 100 строками, вернет набор результатов из 150 строк)
  • Столбцы будут одинакового количества столбцов для каждого запроса *. (например, col1, col2, ..., col10 в первом запросе после добавления с одинаковыми столбцами во втором запросе приведет к одному запросу с одним набором col1, col2, ..., col10)

Существует исключение из числа столбцов, о котором мы расскажем позже. Давайте сначала посмотрим, как выглядит Append в действии;

Рассмотрим два набора данных выборки по студентам каждого курса. Студенты 1 курса:

и студенты курса 2:



Чтобы добавить эти запросы, нажмите на один из них и выберите « Append Queries» в разделе «Combine» на вкладке Home tab в Query Editor



Если вы хотите сохранить существующий результат запроса так, как он есть, и создать новый запрос с добавленным результатом, выберите Append Queries как New, иначе просто выберите Append Queries. В этом примере мы будем добавлять Append Queries как New, потому что хотим сохранить существующие запросы неповрежденными.

Вы можете выбрать основную таблицу (обычно это запрос, который вы выбрали, прежде чем нажимать на Append Queries) и таблицу для добавления.

Вы также можете добавить три или более таблиц и добавить таблицы в список по своему усмотрению. Для этого примера у нас есть только две таблицы, поэтому мы продолжим настройку выше. Append Queries просто присоединяют строки друг к другу, и поскольку имена столбцов в обоих запросах одинаковы, набор результатов будет иметь одинаковые столбцы.



Результат добавления так же прост, как этот:



Append похож на UNION ALL в T-SQL.

Как насчет дубликатов?

Append Queries НЕ удаляет дубликаты. Вы должны использовать Group By или Remove Duplicate Rows, чтобы избавиться от дубликатов.

Что делать, если столбцы в исходных запросах точно не совпадают?

Append требует, чтобы столбцы были точно похожими на работу в наилучшем состоянии. Если столбцы в исходных запросах различны, Append все еще работает, но создает один столбец в каждом столбце. Если один из источников не имеет этого столбца, значение ячейки этого столбца для этих строк будет равно нулю.

Merge

Merge - это другой тип объединения запросов, основанный на сопоставлении строк, а не столбцов. Результатом слияния будет одиночный запрос;

 

  • Между двумя запросами должно быть соединение или соответствие критериям. (например, столбец StudentID обоих запросов, которые должны совпадать друг с другом)
  • Количество строк зависит от критериев соответствия между запросами
  • Количество столбцов зависит от того, какие столбцы выбраны в наборе результатов. (В результате Merge создаст структурированный столбец).

Понимание того, как работает Merge, может выглядеть немного сложнее, но с примерами это будет очень просто, давайте посмотрим на это в действии;

В дополнение к таблицам в первом примере рассмотрим, что есть еще одна таблица для данных курса, как показано ниже:

 

Теперь, если мы хотим совместить запрос курса с добавленным результатом CourseXStudents, чтобы узнать, какие студенты являются частью этого курса со всеми подробностями в каждой строке, нам нужно использовать Merge Queries. Вот снова добавленный результат;

 

Сначала выберите запрос курса, а затем выберите Merge Queries (as New)

 

Для слияния запросов требуются критерии присоединения. Критерии присоединения - это поле (поля) в каждом исходном запросе, которое должно быть сопоставлено друг с другом для построения запроса результата. В этом примере мы хотим объединить запрос курса с Append1, основанный на заголовке курса.

 

Мы расскажем о типах соединений позже. Пока продолжайте выбор, и вы увидите, что эти два запроса совпадают друг с другом на основе названия курса, запрос результата будет таким же, как и первый запрос (курс в этом примере), плюс один дополнительный столбец с именем NewColumn с таблицей в каждой ячейке. Это структурированный столбец, который можно разложить на базовые таблицы. Если вы нажмете на пустую область ячейки, содержащую одну из этих таблиц, вы увидите дополнительную таблицу внизу.

 

Теперь нажмите на значок Expand column и разверните New Column ко всем структурам таблицы



Результатом будет таблица, включающая столбцы из обеих таблиц, и строки, соответствующие друг другу.



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

 

Merge похоже на JOIN в T-SQL

Типы соединений

В Power BI существует 6 типов соединений, как показано ниже, в зависимости от влияния на набор результатов на основе совпадающих строк, каждый из этих типов работает по-разному.



Объяснение того, что будет делать каждый тип соединения, - это совершенно другая тема, на которую мы напишем позже. Пока этот рисунок объясняет это очень хорошо:


Загрузите демо файл отсюда Download

No Comments

Add a Comment