Матеріали

BI не повинен бути місцем, де виправляють джерела

Чому очищення й зшивання даних усередині Power BI робить звіти крихкими і яку частину роботи винести в модель даних.

4 хв читанняСергій Бєляков

Якщо Power BI при кожному оновленні очищає назви, зшиває довідники й відновлює логіку, якої немає в джерелі, звіт стає крихким. Він працює, доки в джерелі нічого не змінилося. Частину цієї роботи треба винести в модель даних і правила підготовки, а частину повернути туди, де помилки виникають.

Як виглядає BI, який «лікує» джерела

Умовний, але дуже впізнаваний приклад. Звіт про отримувачів послуг будується з реєстру. У Power Query (редактор підготовки даних у Power BI) кілька десятків кроків: прибрати пробіли на початку назв, звести «м. Київ», «Київ» і «КИЇВ» до одного значення, підтягнути коди областей з окремого файлу, відфільтрувати тестові записи за словом «тест» у прізвищі.

Звіт показує гарні цифри. Але подивіться на ознаки:

  • Десятки кроків заміни значень. Кожне оновлення заново виправляє ті самі помилки, бо в джерелі їх ніхто не виправив.
  • Довідник відповідностей в Excel. Таблиця «як було, як має бути» лежить поруч зі звітом, часто з назвою на кшталт mapping_final_v3.xlsx. Власника в неї немає, крім автора звіту.
  • Те саме очищення в кількох звітах. Кожен аналітик пише свою версію, трохи інакше. Джерело одне, а цифр на нараді дві.
  • Визначення показників живуть у DAX (мові формул Power BI). Хто вважається отримувачем, який статус активний, на яку дату рахуємо: це вирішує міра у звіті, а не погоджене правило.
  • Оновлення ламається в понеділок зранку, бо в джерелі перейменували колонку або додали нове написання.

Якщо ви впізнали дві-три ознаки, звіт тримається на одному файлі й одній людині.

Чому це крихко

Це схоже на пляму на стелі від даху, що протікає. Можна щомісяця її перефарбовувати, і стеля виглядатиме охайно. Але дах так і тече, а фарба коштує щоразу.

Аналогія неідеальна: пляму на стелі бачать усі, а виправлення в Power Query бачить лише автор файлу. І кожна кімната фарбується своєю фарбою, тобто кожен звіт очищує дані по-своєму.

Звідси чотири практичні наслідки:

  1. Помилка в джерелі живе вічно. Ті, хто вводить дані, не дізнаються, що вводять їх неправильно.
  2. Різні звіти дають різні цифри, бо очищення в них трохи різне.
  3. Знання зосереджене в одній людині. Відпустка або звільнення автора, і звіт перетворюється на чорну скриньку.
  4. Оновлення стає повільним і непередбачуваним, бо важка підготовка виконується щоразу в кожному звіті.

Що залишити в Power Query, а що винести

Виносити все підряд не треба. Корисне питання одне: чи користується цим правилом ще хтось, крім цього звіту?

Залишити в BI:

  • форматування, підписи, порядок категорій для візуалів;
  • фільтри, що стосуються лише цього звіту;
  • легке перетворення таблиці під конкретний графік;
  • міри, які описують відображення, а не визначення показника.

Винести в модель даних і шар підготовки:

  • нормалізацію значень: назви, регістр, формати дат і номерів;
  • довідники відповідностей, у таблиці з власником, а не в чиємусь файлі;
  • пошук і обробку дублікатів;
  • визначення показників: хто отримувач, який статус активний, на яку дату зріз;
  • з'єднання даних з різних систем.

Повернути в джерело:

  • помилки, які повторюються з кожним завантаженням. Їх треба виправляти там, де вводять: правилом у формі, довідником замість вільного тексту, перевіркою під час введення.

Умовний приклад шарів підготовки

Схема нижче не прив'язана до конкретного інструмента. Це може бути база даних, потоки даних (dataflows) у Power BI чи окреме сховище. Порядок важливіший за технологію.

  1. Сирий шар. Копія даних з джерела як є, з датою завантаження. Тут нічого не виправляємо, щоб завжди можна було перевірити, що прийшло.
  2. Очищений шар. Правильні типи, формати й нормалізовані значення. Довідники відповідностей підключаються тут, і в кожного є власник.
  3. Шар бізнес-логіки. Визначення показників і таблиці, з яких будуються звіти: хто отримувач, які статуси, яка дата зрізу. Одне визначення для всіх звітів.
  4. BI. Візуалізація, фільтри й міри поверх готової моделі. Звіт показує, а не ремонтує.

Окремо від шарів варто вести список помилок, знайдених під час очищення. Він іде власнику джерела, щоб кількість виправлень з часом зменшувалася, а не росла.

Як почати без великої перебудови

  1. Відкрийте Power Query свого головного звіту і позначте кожен крок: формат, очищення чи бізнес-логіка.
  2. Знайдіть кроки, які повторюються у двох і більше звітах. Їх виносьте першими: вони вже коштують вам різних цифр.
  3. Ручні таблиці відповідностей перенесіть в одне місце і призначте їм власника.
  4. Складіть перелік помилок, які звіт виправляє щоразу, і передайте його власнику джерела.
  5. Те, що залишилося в звіті, має стосуватися лише показу.

Після кількох таких кроків бізнес-аналітика знову займається тим, для чого вона потрібна: допомагає приймати рішення. А правила підготовки стають частиною архітектури даних, а не секретом одного файлу.

Питання до вас: скільки кроків у вашому найбільшому Power Query і скільки з них насправді лікують джерело?

Схожа задача у вашій команді?

Опишіть ситуацію кількома реченнями. Відповім, з чого я б почав і чи можу допомогти.

Обговорити задачу

Короткі розбори про дані щотижня в Telegram-каналі: @belyakovconsult

Усі матеріали