
Створення фільтра на основі мір в Power BI
Якщо ви - користувач із досвідом роботи в Power BI і маєте за плечима декілька створених дашбордів, ви, напевно, знаєте, наскільки важливо використовувати фільтри для створення зручних і адаптивних звітів. Фільтри дозволяють кожному користувачу отримувати лише ту інформацію, яка є для нього актуальною.
Що таке фільтри?
Фільтри - це чарівна паличка-виручалочка для будь-кого з нас. Навіть у повсякденному житті ми постійно використовуємо фільтри. Наприклад, для того, щоб серед нескінченної кількості товарів, які можна знайти в інтернет-магазині, вам в результаті пошуку видало лише ноутбуки з певними характеристиками, вам потрібно деталізувати параметри, за якими ви обираєте модель (ОП, ціна, бренд, наявність тощо). Тобто ви відсіюєте дані, які в даний момент вам не потрібні. Це і є фільтрація. У звітах Power BI можна створювати фільтри, які працюють за схожим принципом.
А тепер повернемось до технічної частини. Ось наш план:
Типи фільтрів
Особисто я б розділила фільтри в Power BI на два типи: ті, що формуються на основі сталих даних та ті, що формуються на основі змінних.
Що я маю на увазі під сталими даними? Наприклад, дані з певної колонки таблиці або довідника. Однозначно, ви скажете, що й дані в таблицях можуть змінюватись і, відповідно, дані у фільтрі теж. І я з цим погоджуюсь. Але ці дані будуть змінюватись в момент оновлення моделі даних і надалі знову будуть незмінними. Давайте надалі називати такі фільтри статичними. Приклад статичного фільтру - фільтр по джерелам трафіку. В цьому фільтрі виводяться лише наявні значення з довідника\колонки, наприклад, google \ cpc, google \ organic.
Статичні фільтри доволі легкі в реалізації, тому зупинятись на цьому ми не будемо.
Але варто уточнити, що єдиний мінус статичних фільтрів - вони не завжди закривають всі задачі. У цій статті ми розберемо інший тип фільтрів, який закриває задачу фільтрації даних, що змінюються.
Частина даних, що може змінюватись динамічно в Power BI - це міри. І як раз фільтри на основі міри або декількох мір в рамках цієї статті давайте назвемо динамічними.
Вони є незамінними у випадках, коли дані залежать від інших параметрів чи обчислень. Декілька реальних прикладів для використання динамічних фільтрів:
- Для виведення сегментів, витрати на які перевищують середнє значення за останній місяць.
- Для показу замовлень, час виконання яких перевищує певний обчислений поріг.
- Для відокремлення співробітників із найнижчими показниками ефективності.
- Для виведення сегментів відхилень по продажам у порівнянні з попереднім періодом.
Давайте розберемо спосіб реалізації такого типу фільтру на останньому прикладі.
Припустимо, нам потрібно вивести продажі по категоріям товарів у порівнянні з попереднім періодом та оцінити відсоток відхилень по продажам. Оцінювати відхилення ми будемо в рамках сформованих сегментів:
- Critical Deviation: Відхилення нижче -40%.
- Moderate Deviation: Відхилення в межах від -20% до -40%.
- Minor Deviation: Відхилення в межах від -20% до 0.
- Positive Deviation: Відхилення більше 0.
Покрокова реалізація динамічного фільтру в Power BI
1. Створення мір
В нашій задачі для початку потрібно розрахувати міру, яка відображає ступінь відхилення:
Deviation From Previous Period =
DIVIDE(
[Purchases] - [Purchases prev],
[Purchases prev],
0
)- [Purchases] — міра, яка обчислює загальну кількість продажів у поточному періоді.
- [Purchases prev] — міра, що розраховує кількість продажів за попередній період (по суті, це розрахунок міри [Purchases] , але з активацією зв’язку з датою, яка відображає попередній період для обчислень.
- DIVIDE — функція, яка забезпечує безпечний поділ; якщо Purchases prev дорівнює нулю, результатом буде 0.
Ця міра дозволяє оцінити, на скільки відсотків змінилися продажі між періодами.
Я пропустила розрахунок самих продажів, бо в кожного він може бути різним, але для спрощення сприйняття інформації додам скріншот з таблицею, куди я додала ці дані:

Далі створюється міра для сегментації відхилень за рівнями:
- Critical Deviation: Відхилення нижче -40%.
- Moderate Deviation: Відхилення в межах від -20% до -40%.
- Minor Deviation: Відхилення в межах від -20% до 0.
- Positive Deviation: Відхилення більше 0.
Filtered Purchases % =
SWITCH(
TRUE(),
SELECTEDVALUE(ProductCategoryFilter[Filter]) = "Moderate Deviation" && [DeviationFromPreviousPeriod] < -0.20 && [DeviationFromPreviousPeriod] >= -0.40, 1,
SELECTEDVALUE(ProductCategoryFilter[Filter]) = "Critical Deviation" && [DeviationFromPreviousPeriod] < -0.40, 1,
SELECTEDVALUE(ProductCategoryFilter[Filter]) = "Minor Deviation" && [DeviationFromPreviousPeriod] >= -0.20 && [DeviationFromPreviousPeriod] <= 0, 1,
SELECTEDVALUE(ProductCategoryFilter[Filter]) = "Positive Deviation" && [DeviationFromPreviousPeriod] > 0, 1,
SELECTEDVALUE(ProductCategoryFilter[Filter]) = "All", 1,
0
)Я використовую 1 для того, щоб виділити категорії, які відповідають певному ступеню відхилення. у даному випадку 1 це True в бінарній систем, і далі по ній ми будемо виводити категорії товарів у таблиці.
Я думаю, ви звернули увагу на те, що в останній мірі в мене не 4, а 5 сегментів. Для своєї зручності я додала ще варіант, коли у фільтрі можливо вибрати відображення всіх даних (All).
2. Створення таблиці для інтерактивного фільтра
Для виведення фільтра створимо таблицю з текстовими значеннями, які будуть відображати наші ступені відхилення:
PurchasesFilter =
DATATABLE(
"Filter", STRING,
{
{"Moderate Deviation"},
{"Critical Deviation"},
{"Minor Deviation"},
{"Positive Deviation"},
{"All"}
}
)- DATATABLE створює таблицю прямо в моделі даних Power BI.
- Колонка Filter містить текстові значення, які відображаються в фільтрі.
На цьому етапі звертаю вашу увагу на те, що ця таблиця не має зв’язків із іншими даними, що дозволяє використовувати її виключно як фільтр.
3. Інтеграція у звіт
Перевірка відображення даних
Тимчасово додайте міру Filtered Purchases % до вашої основної таблиці та перевірте, що міра повертає правильні значення для різних сегментів у фільтрі Purchases filter.

У нашому випадку, перевіримо дані за листопад та жовтень.
Якщо у фільтрі вибрати Critical Deviation, то значення 1 буде присвоєно лише тим категоріям, у яких Deviation From Previous Period < -40%, наприклад, для категорій Accessories та Perfume, Positive Deviation - для Decorative Cosmetics та Haircare відповідно.

Після перевірки ви можете видалити Filtered Purchases % з таблиці. Але для того, щоб в таблиці виводились лише необхідні дані з певного сегменту, нам потрібно додати умову на рівні таблиці, що Filtered Purchases % is 1.

Фіналізація таблиці
Після перевірки приберіть усі допоміжні колонки та залиште лише необхідні показники (кількість транзакцій, продажі, витрати тощо). Це дозволить отримати чіткий і зручний звіт для аналізу.

На цьому етапі у вас може виникнути логічне питання: ми прописали статичні сегменти відхилень і використовуємо їх у фільтрі, то чому ж ми подаємо їх як динамічні?
Попри те, що сегменти фільтру статичні, відхилення змінюються залежно від інших фільтрів, наприклад, за джерелом трафіку. Таким чином, дані адаптуються до вибраних умов.

Наприклад, обираємо google \ cpc і бачимо, що саме для цього джерела трафіку Positive Deviation у листопаді було лише для Decorative Cosmetics, а Haircare відсутнє в таблиці за даних умов через те, що продажі були з іншого джерела.
У цьому випадку наші прописані умови для сегментів у фільтрі залишаються сталими, але відхилення буде змінюватись в залежності від джерела трафіку, так як кількість продажів буде іншою - це і буде динамічним фільтром.
Висновок
Сподіваюся, мій приклад використання динамічного фільтру дав розуміння для чого та в яких випадках він буде корисним. Мій приклад розбирає ситуацію з однією мірою, але подібні сегменти можна будувати керуючись двома і навіть більше мірами, в залежності від поставленої задачі.
Спробуйте додати динамічні фільтри до свого наступного звіту в Power BI і розкажіть мені в коментарях як це було)

Завантаження коментарів…