Данные редко лежат в одной таблице. Продажи — в одном файле, справочник товаров — в другом; выгрузки приходят помесячно отдельными файлами. Power Query умеет соединять их двумя принципиально разными способами — и важно не путать какой когда. Это merge (слияние по ключу) и append (присоединение).
Сквозной набор курса: Продажи (факт), Товары и Регионы (справочники), Календарь. Плюс представим, что продажи приходят помесячно: Продажи_Янв, Продажи_Фев…
Два способа — две задачи
| Merge (слияние) | Append (присоединение) | |
|---|---|---|
| Что делает | подтягивает столбцы из другой таблицы по ключу | складывает строки таблиц друг под друга |
| Когда | нужно добавить атрибуты (по ТоварID подтянуть название) | одинаковые по структуре куски (месяцы, филиалы) собрать в один |
| Аналогия в Excel | ВПР / VLOOKUP | копипаст строк одной таблицы под другую |
| Растёт | число столбцов | число строк |
Merge добавляет столбцы (вширь): «к каждой строке продаж пристыкуй название товара». Append добавляет строки (вниз): «12 помесячных таблиц → одна годовая». Перепутать нельзя: это решает, что именно вы получите на выходе.
Append: собрать однотипные таблицы
Двенадцать помесячных выгрузок с одинаковыми столбцами надо превратить в одну таблицу Продажи.
Главная → Объединить запросы → Добавить запросы (Append) → выбрать таблицы. Power Query поставит их строки друг под друга по совпадающим именам столбцов.
- Столбцы сопоставляются по имени:
ДатакДата,СуммакСумма. Если в одном файле столбец назван иначе — переименуйте до append, иначе данные «разъедутся» по разным колонкам. - Идеально для регулярных выгрузок: положили новый месяц — обновление подхватит. (А чтобы собирать все файлы из папки автоматически, есть отдельный коннектор «Папка».)
Merge: подтянуть столбцы по ключу
В Продажи есть ТоварID, а название и категория — в справочнике Товары. Хотим к каждой продаже подтянуть название.
Главная → Объединить запросы → Объединить запросы (Merge):
- выбрать вторую таблицу (
Товары); - указать ключ соединения в обеих (
ТоварID); - выбрать тип соединения;
- в новом столбце появится «вложенная» таблица — раскрыть её кнопкой и выбрать нужные поля (
Название,Категория).
Типы соединения (join)
- Внешнее слева (Left Outer) — все строки из первой таблицы + совпадения из второй. Самый частый: «все продажи, и к ним название товара, если найдётся».
- Внутреннее (Inner) — только строки, где есть совпадение в обеих. Отсечёт продажи без товара в справочнике.
- Внешнее справа / полное — реже; для сверки полноты.
- Анти-соединения (Left/Right Anti) — наоборот, строки без пары. Незаменимы для проверки: «какие
ТоварIDиз продаж отсутствуют в справочнике».
Если просто нужно, чтобы справочник фильтровал факт в отчёте — не сливайте таблицы merge'ем, а сделайте связь в модели (звезда, прошлые уроки). Merge оправдан, когда атрибут нужен прямо в самой таблице факта (например, для дальнейших преобразований в Power Query) или когда вы намеренно денормализуете. Не превращайте звезду в одну плоскую таблицу без причины.
Тонкости
- Качество ключа. Merge по «грязному» ключу (пробелы, разный регистр) даст пропуски. Почистите ключ (прошлый урок) до слияния.
- Дубликаты в справочнике. Если в
ТоварыодинТоварIDвстречается дважды — merge размножит строки продаж. Справочник должен быть уникален по ключу. - Append и типы. После append проверьте типы столбцов — иногда их надо переназначить.
Перед тем как доверять модели, сделайте анти-соединение факта со справочником: оно покажет «осиротевшие» ключи — продажи с ТоварID, которого нет в справочнике. Именно из-за них в отчёте появляются пустые названия и «(Пусто)» в срезах. Поймать это на этапе Power Query дешевле, чем удивляться цифрам в дашборде.
Сделайте merge Продажи с Товары по ключу КодТовара (внешнее слева) и раскройте столбец Категория. Сколько уникальных категорий подтянулось?
Показать ответ
5 категорий: Молочка, Бакалея, Напитки, Снеки, Заморозка. Если категорий меньше или появились пустые — проверьте ключ КодТовара (нет ли осиротевших значений) и тип соединения. Анти-соединение быстро покажет несостыковки.
Что дальше
Данные загружены, почищены и собраны в нужные таблицы. Теперь у вас чистая основа для модели «звезда» и DAX — дальше курс возвращается к мерам. Следующий блок — DAX.