Объединение и добавление запросов (Merge / Append)
Соединяем таблицы двумя способами: рядом по ключу (merge) и стопкой (append).
Merge добавляет к таблице столбцы из другой по ключу (как SQL JOIN); Append подставляет строки одной таблицы под строки другой (как UNION).
Две разные задачи
Данные почти никогда не лежат в одной таблице. Иногда нужно дополнить строки полями из справочника (к заказу подтянуть регион клиента) — это merge. Иногда нужно сложить однотипные таблицы в одну (январь + февраль + март) — это append. Путать их нельзя: это операции с принципиально разным результатом.
Append — складываем строки
Append берёт две (или больше) таблицы с одинаковыми столбцами и ставит их одну под другой. Результат — длиннее, но столько же столбцов. Классика: ежемесячные выгрузки продаж с одинаковой структурой склеиваются в единую таблицу за год.
Январь Февраль РЕЗУЛЬТАТ (append)
┌────┬─────┐ ┌────┬─────┐ ┌────┬─────┐
│дата│сумма│ │дата│сумма│ │дата│сумма│
│ 5 │ 100 │ + │ 12 │ 200 │ ────> │ 5 │ 100 │
│ 9 │ 150 │ │ 18 │ 300 │ │ 9 │ 150 │
└────┴─────┘ └────┴─────┘ │ 12 │ 200 │
│ 18 │ 300 │
└────┴─────┘Merge — добавляем столбцы по ключу
Merge соединяет таблицы по общему ключу и подтягивает столбцы. К таблице «Заказы» (есть customer_id) присоединяем «Клиенты» (есть id и регион) — и у каждого заказа появляется регион. Это прямой аналог SQL-соединения:
SELECT o.order_id, o.amount, c.region
FROM orders o
LEFT JOIN customers c ON c.id = o.customer_id;В Power Query при merge выбирают тип соединения — он определяет, какие строки попадут в результат.
| Тип Join | Что оставит |
| Left Outer | все строки левой + совпадения справа (чаще всего) |
| Inner | только строки с совпадением в обеих |
| Full Outer | все строки обеих таблиц |
| Anti | строки без пары (поиск «осиротевших») |
Как работает под капотом
Append — это M-функция Table.Combine: она просто выстраивает строки в стопку, сопоставляя столбцы по имени (несовпадающие имена дадут лишние столбцы с null). Merge — это Table.NestedJoin: к каждой строке левой таблицы прикрепляется вложенная таблица совпадений из правой, которую затем «разворачивают» в нужные столбцы. Важно: после merge на новых данных Power BI заново выполнит соединение, поэтому ключ должен быть стабильным и уникальным в справочнике, иначе строки «размножатся».
Частые ошибки
- Использовать merge вместо связи в модели. Часто справочник лучше связать в модели данных (звезда), а не «вплавлять» столбцы в факт через merge — это гибче и экономнее.
- Merge по неуникальному ключу. Если в справочнике ключ повторяется, строки дублируются и суммы раздуваются.
- Append таблиц с разной структурой. Несовпадающие имена столбцов дадут «дыры» из null.
Итог
- Append складывает строки однотипных таблиц (как UNION) — для месячных выгрузок.
- Merge подтягивает столбцы по ключу (как JOIN) — для обогащения данных из справочников.
- Тип join в merge определяет, какие строки уцелеют; ключ должен быть уникальным.