Data Analyst Professional · Модуль 9 · Урок 31 із 51
Merge, append і повторне використання запитів
Append додає rows за назвами columns. Merge додає columns за key match. Обидві операції без schema та cardinality checks можуть створити правильну на вигляд, але хибну таблицю.
Append: спочатку нормалізуйте schema
Power Query зіставляє columns за names, не за position. Новий campaign у February створить null для January; відсутня required column теж стане null, якщо ви дозволите MissingField.UseNull. Це має бути кероване рішення, а не сюрприз.
Required = {"order_id","ordered_at","customer_id",
"channel","amount_uah","status"},
Normalized = Table.SelectColumns(Source,
Required & {"campaign"}, MissingField.UseNull),
Combined = Table.Combine({January, February})Перед append перевірте normalized names, types, grain, duplicates і source lineage. Після — row count = сума input rows із поясненими exclusions.
Merge: join kind і сторона мають значення
| Join | Використання |
|---|---|
| Left outer | зберегти всі facts і додати matched attributes |
| Inner | залишити лише matched rows — небезпечно без unmatched report |
| Left anti | знайти facts без відповідника у lookup |
| Left semi | перевірити наявність match без expansion |
| Full outer | аудит розбіжностей обох сторін |
Перед merge нормалізуйте key type/case/whitespace і доведіть uniqueness lookup. Після expansion row count facts не має зрости для many-to-one contract.
Cardinality gate
Fact rows, distinct fact keys, lookup rows, distinct lookup keys.
Duplicate lookup keys = 0 для many-to-one.
Rows unchanged; unmatched і expanded counts відомі.
Amount sum до/після merge однакова.
Expand може розмножити факти
Якщо lookup має два rows на key, кожний fact match розгорнеться двічі. Power Query не знає ваш business cardinality — gate має створити аналітик.
Reference queries і functions замість copy-paste
Розділіть pipeline: Orders_Raw → Orders_Staging → Orders_Valid → Orders_Curated. Intermediate queries залишайте connection-only. Reference успадковує upstream logic; reusable function перетворює кожний файл однаково.
WithTransform = Table.AddColumn(Files, "Data",
each fxNormalizeOrders([Content], [Name])),
Combined = Table.Combine(WithTransform[Data])Document function inputs, expected schema, output type і failure behavior. Copy-paste queries швидко розходяться в definitions.
Практика
- Append January і February через reusable transform function.
- Збережіть
campaignта source filename; поясніть nulls. - Merge customer segment many-to-one і перевірте row/amount invariants.
- Знайдіть
affiliateчерез left anti join до channel map. - Зробіть Raw/Staging/Errors queries connection-only; load лише Curated/QA summary.
Офіційні джерела
Готовність до тесту
Ви відрізняєте append від merge, контролюєте schema drift і cardinality, знаходите unmatched keys та повторно використовуєте logic без копій.
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.