DAX формули в Power BI: практичний гайд

DAX відповідає за розрахунки всередині моделі Power BI. Розбираємо базові функції, часову аналітику, типові помилки та готові формули для бізнес-звітів.
Коли водій після років на автоматі сідає за кермо механіки, знайомі рухи раптом перестають працювати. Схожа ситуація з Excel і Power BI: функції SUM, IF чи FILTER знайомі, але логіка розрахунків інша. DAX формули в Power BI працюють із контекстом рядків і фільтрів — саме це потребує зміни звичного підходу.
У гайді розберемо, що таке DAX, чим він відрізняється від Power Query, які функції потрібні насамперед і де виникають типові помилки. Матеріал підійде як DAX для початківців, так і для аналітиків з досвідом.
Що таке DAX і навіщо він потрібен
DAX — це мова формул і виразів Microsoft для Power BI, Analysis Services та Power Pivot в Excel. За допомогою DAX створюють міри, обчислювані стовпці й таблиці. Результат розрахунку залежить від структури моделі та контексту, у якому виконується формула.
Excel-формули зазвичай звертаються до комірок і діапазонів, тоді як DAX формули працюють із таблицями та стовпцями моделі. Наприклад, міра з SUM перераховується відповідно до поточних фільтрів звіту.
Навіщо потрібен DAX аналітику:
- Розрахунок бізнес-метрик: маржа, конверсія, LTV — показники, які неможливо отримати простим підсумовуванням стовпця.
- Часова аналітика: порівняння рік до року, наростаючий підсумок, показники на початок/кінець періоду.
- Динамічні розрахунки: міри перераховуються відповідно до вибраних користувачем фільтрів і не зберігають окремий результат для кожного рядка.
Якщо компанія використовує Power BI для бізнесу, DAX потрібен для власних метрик і розрахунків, що змінюються разом із фільтрами звіту.
DAX vs Power Query: у чому різниця
Power Query готує та перетворює дані до завантаження в модель, а DAX виконує розрахунки вже всередині моделі.
| Критерій | Power Query | DAX |
|---|---|---|
| Коли працює | На етапі завантаження та підготовки даних | У моделі даних: обчислювані стовпці та таблиці розраховуються під час оновлення даних, а міри — під час роботи зі звітом. |
| Що робить | Очищує, фільтрує, об'єднує таблиці з різних джерел | Виконує розрахунки в моделі даних: створює міри, обчислювані стовпці і таблиці. |
| Мова | M (Power Query M) | DAX (Data Analysis Expressions). |
| Результат | Нова таблиця або стовпець у моделі | Залежить від типу розрахунку: міра змінює результат відповідно до поточних фільтрів, а обчислювані стовпці та таблиці зберігають розраховані значення в моделі. |
| Приклад задачі | Об'єднати дані з CRM і Excel-файлу в одну таблицю | Порахувати частку повторних клієнтів від загальної кількості |
Power Query відповідає за підготовку даних, а DAX функції — за розрахунки в моделі. Синтаксично правильна DAX-формула все одно може дати хибний результат через помилку в логіці, зв’язках або контексті.
Базові функції DAX
DAX функції не потрібно вчити всі одразу. Для початку важливіше опанувати базові функції та зрозуміти, як контекст впливає на розрахунок.
CALCULATE
CALCULATE — одна з ключових DAX функцій: вона обчислює вираз у зміненому контексті фільтрації.
Базовий синтаксис:
CALCULATE(<вираз>, <фільтр1>, <фільтр2>, …)
Приклад: потрібно порахувати продажі категорії «Електроніка», навіть якщо через поле Product[Category] у звіті вибрана інша категорія:
Продажі Електроніки = CALCULATE(SUM(Sales[Amount]), Product[Category] = “Електроніка”)
CALCULATE замінить поточний фільтр на Product[Category], але фільтри за періодом, регіоном тощо продовжать діяти. Це один із базових принципів написання складніших DAX формул.
SUM, SUMX та ітеративні функції
SUM — найпростіша агрегатна функція, вона підсумовує значення одного стовпця:
Загальна сума = SUM(Sales[Amount])
Для розрахунків, де вираз потрібно виконати для кожного рядка, використовують ітеративні функції SUMX, AVERAGEX, COUNTX. Вони обчислюють вираз рядок за рядком, а потім агрегують результат.
Класичний приклад — розрахунок виручки, коли ціна і кількість зберігаються в різних стовпцях:
Виручка = SUMX(Sales, Sales[Кількість] * Sales[Ціна])
У цьому прикладі SUM не підходить, оскільки потрібно спочатку перемножити значення в кожному рядку.
Time intelligence — формули для періодів
DAX функції дати використовують для порівняння періодів, наприклад місяць до місяця, рік до року або для наростаючого підсумку.
- SAMEPERIODLASTYEAR повертає набір дат за відповідний період попереднього року.
- DATESYTD повертає набір дат від початку року до поточної дати в розрахунку.
- PREVIOUSMONTH і PREVIOUSQUARTER повертають дати попереднього місяця або кварталу.
- DATEADD зміщує набір дат на заданий проміжок часу.
Ці функції зазвичай використовують усередині CALCULATE, щоб на основі отриманого набору дат розрахувати потрібний показник.
Приклад формули для порівняння продажів рік до року:
Продажі минулого року = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Calendar[Date]))
Такі формули в Power BI використовують у KPI-дашбордах для автоматичного порівняння показників між періодами.
Для класичної часової аналітики потрібна окрема таблиця дат з унікальними значеннями без пропусків і порожніх значень, яка охоплює повні роки та позначена в Power BI як таблиця дат.
Типові помилки при написанні DAX
Якщо ви тільки вчитеся, як писати DAX формули, варто насамперед розібратися з помилками, які безпосередньо впливають на результат розрахунків. Ось найпоширеніші DAX помилки та як їх уникнути.
- Плутанина між контекстом рядка та контекстом фільтрації. Перший визначає поточний рядок, зокрема в SUMX, другий — набір даних, що потрапляє в розрахунок під дією фільтрів, зв'язків і самої формули.
- Обчислюваний стовпець замість міри. Стовпець розраховується під час оновлення і зберігається в моделі, а міра — під час роботи зі звітом та реагує на фільтри. Для динамічного показника зазвичай потрібна міра.
- Ділення без перевірки знаменника. Якщо він може дорівнювати нулю або бути порожнім, використовуйте DIVIDE: Маржа % = DIVIDE([Прибуток], [Виручка]). За замовчуванням функція поверне BLANK; третім аргументом можна задати інше значення.
- Неоптимальні фільтри в CALCULATE. Для простих умов краще фільтрувати безпосередньо за стовпцем, а FILTER використовувати для складнішої логіки.
- Незрозумілі назви мір. «Measure1» ускладнює підтримку моделі, тоді як «Маржа % поточного місяця» одразу показує призначення розрахунку.
Приклади DAX-формул для бізнес-звітів
Нижче кілька DAX формул для типових бізнес-звітів:
Частка повторних клієнтів:
% Повторних клієнтів = VAR ПовторніКлієнти = FILTER( VALUES(Sales[ClientID]), CALCULATE(DISTINCTCOUNT(Sales[OrderNumber])) > 1 ) RETURN DIVIDE( COUNTROWS(ПовторніКлієнти), DISTINCTCOUNT(Sales[ClientID]) )
Повторним тут вважається клієнт з більш ніж одним унікальним замовленням у поточному контексті звіту.
Наростаючий підсумок продажів з початку року:
Продажі YTD = TOTALYTD(SUM(Sales[Amount]), Calendar[Date])
Динаміка відносно минулого місяця (у %):
Продажі минулого місяця = CALCULATE( [Загальна сума], PREVIOUSMONTH(Calendar[Date]) )
Динаміка MoM % = DIVIDE( [Загальна сума] – [Продажі минулого місяця], [Продажі минулого місяця] )
ТОП-N товарів за виручкою (для рейтингових візуалів):
Ранг товару = RANKX(ALL(Product[Назва]), [Виручка], , DESC)
Щоб отримати саме ТОП-N товарів, після розрахунку рейтингу потрібно застосувати до візуалізації відповідний фільтр, наприклад Ранг товару <= 10.
Активні клієнти за останні 90 днів:
Активні клієнти 90д = CALCULATE( DISTINCTCOUNT(Sales[ClientID]), DATESINPERIOD(Calendar[Date], MAX(Calendar[Date]), -90, DAY) )
Як IWIS будує складні DAX-моделі для клієнтів
Серед проєктів IWIS з бізнес-аналітики є рішення для Планети Кіно, Helen Marlen, BAT, Swiss Krono та інших компаній. У складних моделях Power BI бізнес-логіка часто виходить далеко за межі базових SUM і CALCULATE.
Типова послідовність роботи команди над DAX-моделлю:
- Аудит бізнес-логіки. Команда уточнює, як компанія рахує кожну метрику, та узгоджує єдині правила.
- Проєктування моделі даних. Структура таблиць, таблиця дат і зв'язки між ними визначають подальшу складність DAX-формул.
- Написання та оптимізація мір. Швидкодію перевіряють на даних, за обсягом і структурою наближених до робочих.
- Документування логіки. Для складних метрик фіксують джерела даних і правила розрахунку.
Безкоштовна консультація від IWIS
Якщо DAX формули дають неправильний результат, дашборд працює повільно або показники не сходяться, перевіряти потрібно модель, зв’язки, фільтри, бізнес-логіку та самі формули.
На безкоштовній консультації команда IWIS:
- проаналізує структуру даних і DAX-модель;
- знайде причини розбіжностей у розрахунках;
- підкаже, які метрики варто переробити або оптимізувати;
- порадить формат впровадження бізнес-аналітики на базі Power BI під ваші процеси.
Розібратися з вашою DAX-моделлю
Залиште заявку на безкоштовну консультацію — обговоримо вашу модель даних і розрахунки.
Залишити заявкуЧасті запитання
Що таке DAX у Power BI?
DAX (Data Analysis Expressions) — мова формул для розрахунків у Power BI. DAX працює з таблицями, стовпцями та зв’язками моделі даних, а результат мір змінюється залежно від поточних фільтрів звіту.
Для чого потрібен DAX?
DAX дозволяє створювати власні бізнес-метрики: наприклад, розраховувати маржинальність, порівнювати показники між періодами або будувати наростаючий підсумок. Power BI може працювати і без власних DAX-формул, але DAX у Power BI потрібен для розрахунків, яких немає у вихідних даних і які мають змінюватися залежно від фільтрів звіту.
Чим measure відрізняється від calculated column?
Обчислюваний стовпець розраховується під час оновлення даних, а його значення зберігаються в моделі. Міра обчислюється під час роботи зі звітом і реагує на поточні фільтри, наприклад на вибраний регіон або період. Для динамічних показників зазвичай використовують міри, а обчислювані стовпці потрібні для розрахунків на рівні окремих рядків.
Які DAX функції треба знати аналітику?
Достатньо впевнено володіти базовим набором: CALCULATE (зміна контексту фільтрів), SUM і SUMX (агрегація), DIVIDE (безпечне ділення) та функціями часової аналітики — SAMEPERIODLASTYEAR, DATESYTD, TOTALYTD.
Як працює функція CALCULATE у DAX?
CALCULATE обчислює вираз після зміни умов фільтрації. Наприклад, за її допомогою можна порахувати продажі певної категорії, замінивши поточний фільтр саме на категорію товару, але зберігши інші фільтри звіту. Тому розуміння CALCULATE потрібне для побудови багатьох складніших DAX формул.
З яких формул DAX почати?
DAX для початківців варто починати з базових агрегатних функцій SUM, AVERAGE і COUNT, потім перейти до DIVIDE та CALCULATE, а після цього — до функцій часової аналітики. Для класичних розрахунків за періодами потрібно також створити й правильно налаштувати окрему таблицю дат.
Цікаві матеріали для вас
Що таке дашборд: види, приклади та як бізнес використовує дашборди для прийняття рішень
Більшість знають Флоренс Найтінгейл як медсестру....
Читати більше Що таке дашборд: види, приклади та як бізнес використовує дашборди для прийняття рішень