Data Analyst Professional · Модуль 9 · Урок 31 із 51

Merge, append і повторне використання запитів

Append додає rows за назвами columns. Merge додає columns за key match. Обидві операції без schema та cardinality checks можуть створити правильну на вигляд, але хибну таблицю.

120 хвCombine safelyМінітест: 3 питання

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

Before

Fact rows, distinct fact keys, lookup rows, distinct lookup keys.

Lookup QA

Duplicate lookup keys = 0 для many-to-one.

After

Rows unchanged; unmatched і expanded counts відомі.

Reconcile

Amount sum до/після merge однакова.

Expand може розмножити факти

Якщо lookup має два rows на key, кожний fact match розгорнеться двічі. Power Query не знає ваш business cardinality — gate має створити аналітик.

Reference queries і functions замість copy-paste

Розділіть pipeline: Orders_RawOrders_StagingOrders_ValidOrders_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 без копій.

Практична перевірка · урок 31 з 51

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що робить append?
2. Що відбудеться з новою column лише в одному file?
3. Що робить merge?