DAX для початківців: що це, базові функції та приклади формул у Power BI
Коротка відповідь: DAX (Data Analysis Expressions) — це мова формул, якою в Power BI описують розрахунки: міри, обчислювані стовпці та обчислювані таблиці. Формули DAX схожі на формули Excel, але працюють не з клітинками, а зі стовпцями й таблицями моделі даних, і результат залежить від того, які фільтри застосовано у звіті.
Перший звіт у Power BI можна зібрати взагалі без формул: перетягнули поле на візуал — отримали суму. DAX стає потрібен на другий день, коли керівник просить середній чек, частку категорії в загальному виторгу або порівняння з минулим місяцем. У цій статті — мінімум, якого вистачить, щоб писати такі формули самостійно й розуміти, чому вони повертають саме це число.
Усі приклади побудовані на одному наборі даних із восьми продажів. Поруч із кожною формулою вказано результат, який вона повертає на цих даних, тож ви можете відтворити модель у Power BI Desktop і звірити цифри. Синтаксис функцій звірений із документацією Microsoft; посилання зібрані наприкінці статті.
Що таке DAX і навіщо він у Power BI
DAX — це мова виразів для аналізу даних, яку Microsoft використовує в Power BI, Power Pivot в Excel та Analysis Services. За визначенням Microsoft, формули DAX складаються з функцій, операторів і значень та виконують розрахунки над даними у пов'язаних таблицях і стовпцях табличної моделі.
DAX не завантажує й не очищає дані — це робота Power Query. DAX починається після того, як таблиці вже лежать у моделі та пов'язані між собою. Ним створюють чотири речі:
- міри — показники, що рахуються «на льоту» залежно від фільтрів звіту: виторг, середній чек, частка, приріст;
- обчислювані стовпці — нові стовпці в таблиці, значення яких рахується для кожного рядка;
- обчислювані таблиці — наприклад, таблицю дат;
- правила безпеки на рівні рядків — умови, які визначають, хто які рядки бачить.
Якщо ви тільки знайомитеся з інструментом, почніть із глосарія: що таке Power BI і що таке дашборд. А про те, де проходить межа між двома головними інструментами аналітика, — у порівнянні Power BI vs Excel.
Місце DAX у роботі зі звітом має такий вигляд:
DAX чи формули Excel: у чому різниця
Головна різниця: формула Excel посилається на клітинки й діапазони, а формула DAX — на стовпці й таблиці, і рахується в контексті фільтрів звіту. У DAX немає адреси A1: не можна «взяти значення з рядка вище» або «з клітинки праворуч».
| Критерій | Формули Excel | DAX |
|---|---|---|
| На що посилається формула | Клітинки й діапазони: A2, B2:B100 | Стовпці й таблиці: Sales[Quantity], Sales |
| Де живе результат | У клітинці, куди введено формулу | У мірі або стовпці, які використовуються в усьому звіті |
| Від чого залежить результат | Від значень у клітинках | Від даних і від контексту: фільтрів, зрізів, рядків візуалу |
| Зв'язок між таблицями | Пошук значень: VLOOKUP, XLOOKUP | Зв'язки в моделі; за потреби — RELATED |
| Умовні суми | SUMIFS, COUNTIFS | CALCULATE з умовами фільтра |
| Схожі функції | SUM, AVERAGE, MIN, MAX, IF, LEFT, RIGHT, MID, TRIM — назви однакові, але в DAX агрегатні функції приймають стовпець, а не діапазон | |
Через цю схожість DAX спершу здається знайомим, а потім дивує: формула та сама, а число в кожному рядку таблиці різне. Це не помилка, а головна властивість мови. Міра рахується окремо для кожної клітинки візуалу — з урахуванням фільтрів, які на неї діють. Цей механізм називається контекстом, і вся стаття, по суті, про нього.
Набір даних для прикладів
Візьмемо невеликий магазин техніки. У моделі дві таблиці: Sales (продажі) та Products (довідник товарів). Вони пов'язані за стовпцем ProductID зв'язком «один до багатьох»: один товар — багато продажів.
Таблиця Products
| ProductID | Product | Category |
|---|---|---|
| 1 | Ноутбук | Техніка |
| 2 | Мишка | Аксесуари |
| 3 | Клавіатура | Аксесуари |
| 4 | Монітор | Техніка |
Таблиця Sales
| OrderID | Date | ProductID | Quantity | Price | City |
|---|---|---|---|---|---|
| 1 | 05.01.2026 | 1 | 1 | 30 000 | Київ |
| 2 | 12.01.2026 | 2 | 3 | 500 | Львів |
| 3 | 20.01.2026 | 3 | 2 | 1 500 | Київ |
| 4 | 03.02.2026 | 4 | 1 | 8 000 | Одеса |
| 5 | 14.02.2026 | 2 | 5 | 500 | Київ |
| 6 | 25.02.2026 | 1 | 1 | 30 000 | Львів |
| 7 | 02.03.2026 | 3 | 1 | 1 500 | Одеса |
| 8 | 18.03.2026 | 4 | 2 | 8 000 | Київ |
Price — ціна за одиницю в гривнях, Quantity — кількість у замовленні. Готового стовпця із сумою замовлення немає — це зроблено навмисно, щоб показати різницю між SUM і SUMX.
У Power BI Desktop натисніть «Ввести дані» (Enter data), створіть обидві таблиці, а у поданні моделі перетягніть Products[ProductID] на Sales[ProductID]. Назви таблиць і стовпців у статті англійські — так прийнято в більшості робочих моделей, і так формули легше порівнювати з документацією.
Міра чи обчислюваний стовпець
Обчислюваний стовпець рахується для кожного рядка таблиці один раз — під час оновлення даних — і зберігається в моделі. Міра рахується в момент, коли її показує візуал, і враховує поточні фільтри звіту. Це перше рішення, яке доводиться ухвалювати, коли ви пишете формулу.
| Критерій | Обчислюваний стовпець | Міра |
|---|---|---|
| Коли рахується | Під час оновлення даних | Під час кожної взаємодії зі звітом |
| Що повертає | Значення в кожному рядку таблиці | Одне значення для поточного контексту фільтра |
| Де зберігається | У моделі, збільшує її розмір | Ніде: зберігається лише формула |
| Контекст | Контекст рядка | Контекст фільтра |
| Де використовувати | У зрізах, фільтрах, на осях і в легендах | В області значень візуалів |
| Приклад | Розмір замовлення: «Велике» / «Звичайне» | Виторг, середній чек, частка категорії |
Обчислюваний стовпець із сумою кожного замовлення:
Amount = Sales[Quantity] * Sales[Price]
У першому рядку таблиці Sales стовпець поверне 30 000, у другому — 1 500, у третьому — 3 000 і так далі. Формула «бачить» поточний рядок — це і є контекст рядка.
Міра із загальним виторгом:
Revenue = SUMX(Sales, Sales[Quantity] * Sales[Price])
На картці без фільтрів міра поверне 92 500. Якщо поставити її в таблицю поруч із містом, вона сама перерахується для кожного рядка: Київ — 51 500, Львів — 31 500, Одеса — 9 500. Формула та сама, змінюється контекст фільтра.
Якщо результат має бути числом, яке підсумовується й змінюється залежно від зрізів, — пишіть міру. Якщо результат потрібен як ознака рядка, за якою ви фільтруватимете або групуватимете, — створюйте обчислюваний стовпець. Коли вагаєтесь — починайте з міри: вона не збільшує модель.
Базові функції DAX: SUM, AVERAGE, COUNTROWS, DIVIDE, IF
Агрегатні функції DAX — SUM, AVERAGE, MIN, MAX, COUNT — приймають один стовпець і повертають одне число для поточного контексту фільтра. З них починається будь-яка модель.
Total Quantity = SUM(Sales[Quantity])
Orders = COUNTROWS(Sales)
Average Price = AVERAGE(Sales[Price])
Max Price = MAX(Sales[Price])
На наших даних Total Quantity повертає 16, Orders — 8, Average Price — 10 000, Max Price — 30 000.
Зверніть увагу на Average Price: це середнє значення стовпця Price по рядках, а не середній чек. Середній чек — це виторг, поділений на кількість замовлень, і для ділення в DAX є окрема функція:
Average Check = DIVIDE([Revenue], [Orders])
Результат — 11 562,5. Функція DIVIDE безпечніша за оператор /: якщо знаменник дорівнює нулю, вона повертає порожнє значення (BLANK) або альтернативний результат, який можна вказати третім аргументом, — і візуал не показує помилку.
У цій формулі міра посилається на інші міри — [Revenue] та [Orders]. Так і варто будувати модель: прості міри стають цеглинками для складніших.
Логічна функція IF
IF перевіряє умову й повертає одне значення, якщо вона істинна, та інше — якщо хибна. Найчастіше її застосовують в обчислюваних стовпцях, щоб розкласти рядки по групах:
Order Size =
IF(
Sales[Quantity] * Sales[Price] >= 10000,
"Велике",
"Звичайне"
)
Три замовлення (№ 1, 6 і 8) отримають значення «Велике», решта п'ять — «Звичайне». Тепер за стовпцем Order Size можна фільтрувати звіт або будувати діаграму.
У мірах IF часто поєднують із перевіркою на порожнє значення, щоб не показувати результат там, де даних немає:
Average Check Safe =
IF(
ISBLANK([Revenue]),
BLANK(),
DIVIDE([Revenue], [Orders])
)
SUMX і контекст рядка
SUM додає значення одного стовпця, а SUMX проходить по таблиці рядок за рядком, обчислює вираз для кожного рядка й додає результати. Функції із суфіксом X — SUMX, AVERAGEX, MINX, MAXX, COUNTX — називаються ітераторами.
У нашій таблиці немає стовпця із сумою замовлення, тому виторг через SUM порахувати не можна. Новачки часто пробують так:
Revenue Wrong = SUM(Sales[Quantity]) * SUM(Sales[Price])
Ця формула поверне 1 280 000 замість 92 500: вона спочатку додає всі кількості (16), потім усі ціни (80 000) і перемножує суми. Множити треба в кожному рядку окремо, а додавати — вже результати:
Revenue = SUMX(Sales, Sales[Quantity] * Sales[Price])
Як це рахується крок за кроком:
| OrderID | Quantity | Price | Quantity × Price |
|---|---|---|---|
| 1 | 1 | 30 000 | 30 000 |
| 2 | 3 | 500 | 1 500 |
| 3 | 2 | 1 500 | 3 000 |
| 4 | 1 | 8 000 | 8 000 |
| 5 | 5 | 500 | 2 500 |
| 6 | 1 | 30 000 | 30 000 |
| 7 | 1 | 1 500 | 1 500 |
| 8 | 2 | 8 000 | 16 000 |
| Разом | 92 500 | ||
Перший аргумент SUMX — таблиця, по якій іти; другий — вираз, який обчислюється в контексті кожного її рядка. Тому всередині SUMX можна писати Sales[Quantity] без агрегатної функції: ітератор створює контекст рядка, так само як обчислюваний стовпець.
CALCULATE, FILTER і ALL: контекст фільтра
CALCULATE обчислює вираз у зміненому контексті фільтра: додає нові фільтри, замінює наявні або знімає їх. Це найважливіша функція DAX — на ній тримаються частки, порівняння періодів і будь-які показники «за умовою».
Синтаксис за документацією Microsoft: CALCULATE(<вираз>, <фільтр1>, <фільтр2>, …). Перший аргумент — що рахувати, решта — за яких умов.
Додати умову
Revenue Kyiv = CALCULATE([Revenue], Sales[City] = "Київ")
Результат — 51 500. Це аналог SUMIFS з Excel: «виторг, але тільки там, де місто — Київ».
Важлива деталь: така умова замінює фільтр за стовпцем City, який уже є у візуалі. Якщо поставити Revenue Kyiv у таблицю з містами, у кожному рядку — і у Львові, і в Одесі — буде 51 500. Зручно, коли потрібен стовпець для порівняння з еталоном, і несподівано, якщо про це не знати.
Умов може бути кілька — вони поєднуються через «і». Фільтрувати можна й за стовпцем пов'язаної таблиці:
Revenue Kyiv Tech =
CALCULATE(
[Revenue],
Sales[City] = "Київ",
Products[Category] = "Техніка"
)
Результат — 46 000: ноутбук за 30 000 і два монітори на 16 000.
FILTER: умова, що обчислюється для кожного рядка
Проста умова в CALCULATE порівнює стовпець із конкретним значенням. Коли умова складніша — наприклад, залежить від добутку двох стовпців, — потрібна функція FILTER. Вона проходить по таблиці й повертає тільки ті рядки, для яких умова істинна:
Revenue Big Orders =
CALCULATE(
[Revenue],
FILTER(Sales, Sales[Quantity] * Sales[Price] >= 10000)
)
Результат — 76 000: замовлення № 1, 6 і 8 (30 000 + 30 000 + 16 000).
ALL: зняти фільтри й порахувати частку
ALL робить протилежне — прибирає фільтри з таблиці або стовпця. Найчастіший сценарій — частка від загального підсумку:
Revenue Share =
DIVIDE(
[Revenue],
CALCULATE([Revenue], ALL(Products))
)
У таблиці за категоріями міра покаже:
| Category | Revenue | Revenue Share |
|---|---|---|
| Техніка | 84 000 | 90,8 % |
| Аксесуари | 8 500 | 9,2 % |
| Разом | 92 500 | 100 % |
Логіка така. У рядку «Техніка» чисельник [Revenue] рахується у фільтрі цієї категорії — 84 000. У знаменнику ALL(Products) знімає фільтр із таблиці товарів, тому [Revenue] рахується за всіма категоріями — 92 500. Споріднена функція ALLEXCEPT знімає всі фільтри з таблиці, крім указаних стовпців.
Читайте формулу з кінця: спочатку — «за яких умов» (аргументи-фільтри), потім — «що рахувати» (перший аргумент). CALCULATE([Revenue], Sales[City] = "Київ") — це «залиш тільки Київ і порахуй виторг».
DAX найшвидше вчиться на реальних звітах
На курсі Power BI у Prog Academy ви проходите шлях від Power Query та моделі даних до функцій DAX і готового дашборду — з практикою, домашніми завданнями та портфоліо за 2 місяці.
Програма курсу Power BI →RELATED і зв'язки між таблицями
RELATED повертає значення з пов'язаної таблиці для поточного рядка — це аналог VLOOKUP (ВПР), який працює по зв'язку в моделі. Функція йде від боку «багато» до боку «один»: із продажу — до товару.
Обчислюваний стовпець у таблиці Sales, який підтягує категорію товару:
Category = RELATED(Products[Category])
Для замовлення № 1 (ноутбук) стовпець поверне «Техніка», для № 2 (мишка) — «Аксесуари».
За документацією, RELATED потребує двох речей: зв'язку між таблицями та контексту рядка. Тому функцію використовують в обчислюваних стовпцях або всередині ітераторів на кшталт SUMX і FILTER:
Revenue Tech =
SUMX(
FILTER(Sales, RELATED(Products[Category]) = "Техніка"),
Sales[Quantity] * Sales[Price]
)
Результат — 84 000. Той самий показник можна отримати коротше: CALCULATE([Revenue], Products[Category] = "Техніка"). Обидві формули правильні; друга простіша, і саме її варто обирати, коли умова — це порівняння стовпця зі значенням.
Ні. Якщо таблиці пов'язані, фільтр із довідника сам поширюється на таблицю продажів: ставите Products[Category] у рядки візуалу — і [Revenue] рахується за категоріями без жодного RELATED. Копіювати стовпці з довідника в таблицю фактів зазвичай не треба. Коли зв'язку між таблицями немає, значення шукають функцією LOOKUPVALUE.
Таблиця дат: CALENDAR, TOTALYTD, DATEADD
Для розрахунків у часі — «з початку року», «минулий місяць», «рік до року» — моделі потрібна окрема таблиця дат із безперервним переліком днів. Її можна створити прямо в DAX як обчислювану таблицю.
Calendar = CALENDAR(DATE(2026, 1, 1), DATE(2026, 12, 31))
CALENDAR повертає таблицю з одним стовпцем Date — по рядку на кожен день між двома датами. Функція CALENDARAUTO() робить те саме, але межі діапазону визначає сама за датами в моделі.
До таблиці додають обчислювані стовпці, за якими зручно групувати:
Year = YEAR('Calendar'[Date])
Month Number = MONTH('Calendar'[Date])
Month = FORMAT('Calendar'[Date], "MMMM")
Далі три кроки: пов'язати 'Calendar'[Date] із Sales[Date], позначити таблицю як таблицю дат (Mark as date table) і використовувати у візуалах дати саме з календаря, а не з таблиці продажів. Докладніше про вимоги — у довідці Microsoft про таблиці дат.
Тепер працюють функції часової аналітики (time intelligence):
Revenue YTD = TOTALYTD([Revenue], 'Calendar'[Date])
Revenue Previous Month =
CALCULATE(
[Revenue],
DATEADD('Calendar'[Date], -1, MONTH)
)
У таблиці за місяцями ці міри повернуть:
| Місяць | Revenue | Revenue YTD | Revenue Previous Month |
|---|---|---|---|
| Січень | 34 500 | 34 500 | — |
| Лютий | 40 500 | 75 000 | 34 500 |
| Березень | 17 500 | 92 500 | 40 500 |
TOTALYTD накопичує виторг від початку року до поточної дати контексту, а DATEADD зсуває період на вказану кількість інтервалів — тут на один місяць назад.
Змінні VAR: як зробити формулу читабельною
Змінна в DAX — це іменований проміжний результат усередині формули: оголошується словом VAR, а підсумок повертається після RETURN. Змінні роблять довгі формули зрозумілими й дозволяють не обчислювати той самий вираз двічі.
Revenue MoM % =
VAR CurrentRevenue = [Revenue]
VAR PreviousRevenue =
CALCULATE(
[Revenue],
DATEADD('Calendar'[Date], -1, MONTH)
)
RETURN
DIVIDE(CurrentRevenue - PreviousRevenue, PreviousRevenue)
На наших даних міра покаже приріст 17,4 % у лютому (40 500 проти 34 500) і −56,8 % у березні (17 500 проти 40 500). Для січня попереднього місяця в даних немає, тож DIVIDE поверне порожнє значення.
Microsoft рекомендує змінні з трьох причин: продуктивність, читабельність і простіше налагодження — будь-яку змінну можна тимчасово повернути в RETURN і подивитися, що в ній лежить. Крім того, змінні замінюють функцію EARLIER, якою у старих формулах зверталися до зовнішнього контексту рядка: у навчальних матеріалах і чужих моделях вона ще трапляється, але в нових формулах зручніше писати VAR.
Шпаргалка: базові функції DAX
Для перших робочих звітів вистачає приблизно трьох десятків функцій. Нижче — ті, що найчастіше потрібні на старті, за групами.
| Група | Функції | Що роблять |
|---|---|---|
| Агрегатні | SUM, AVERAGE, MIN, MAX, COUNT, COUNTROWS, DISTINCTCOUNT | Зводять стовпець або таблицю до одного числа |
| Ітератори | SUMX, AVERAGEX, MINX, MAXX, COUNTX | Обчислюють вираз для кожного рядка й агрегують результат |
| Логічні | IF, IFERROR, AND, OR, SWITCH | Перевіряють умови й повертають різні значення |
| Фільтрації | CALCULATE, FILTER, ALL, ALLEXCEPT | Змінюють контекст фільтра |
| Зв'язків | RELATED, LOOKUPVALUE | Беруть значення з іншої таблиці |
| Дати й часу | CALENDAR, CALENDARAUTO, DATE, YEAR, MONTH, TOTALYTD, DATEADD | Створюють календар і рахують показники в часі |
| Інформаційні | ISBLANK, ISEMPTY, ISFILTERED, BLANK | Перевіряють стан значення або фільтра |
| Текстові | TRIM, LEFT, RIGHT, MID, FIND, FORMAT | Очищають і перетворюють текст |
| Математичні | DIVIDE, ROUND, ABS | Безпечне ділення й округлення |
Типові помилки новачків у DAX
Більшість помилок у DAX — не синтаксичні, а логічні: формула працює, але рахує не те. Ось сім, які трапляються найчастіше.
- Обчислюваний стовпець замість міри. Звичка з Excel — додати стовпець на будь-який випадок. У Power BI це збільшує модель, а частки й середні, пораховані в стовпці, у підсумках дають хибні цифри. Показники пишіть мірами.
SUMтам, де потрібенSUMX. Добуток сум не дорівнює сумі добутків: 1 280 000 замість 92 500 у прикладі вище.- Ділення оператором
/. Порожній місяць або нульовий знаменник — і у візуалі з'являється помилка чи нескінченність.DIVIDEрозв'язує це одним аргументом. - Немає зв'язку між таблицями. Якщо міра показує однакове число в кожному рядку таблиці, найчастіше причина не у формулі, а в моделі: зв'язку немає, або він неактивний чи напрямлений не туди.
- Дати з таблиці фактів замість календаря. Функції часової аналітики очікують окрему таблицю дат із безперервним діапазоном, позначену як таблиця дат.
- Посилання без назви таблиці. Загальноприйнята домовленість: стовпці пишуть із таблицею —
Sales[Price], міри без таблиці —[Revenue]. Тоді з формули одразу видно, де стовпець, а де міра. - Одна формула на двадцять рядків без змінних. Розбийте її на прості міри та
VAR— і помилку стане видно.
Практичне завдання
Спробуйте написати три міри на тому самому наборі даних, а потім звірте з відповідями.
- Кількість проданих одиниць у категорії «Аксесуари».
- Кількість замовлень зі Львова.
- Частка Києва в загальному виторгу.
Показати розв'язок
Accessories Quantity =
CALCULATE(
SUM(Sales[Quantity]),
Products[Category] = "Аксесуари"
)
Orders Lviv = CALCULATE(COUNTROWS(Sales), Sales[City] = "Львів")
Kyiv Share =
DIVIDE(
CALCULATE([Revenue], Sales[City] = "Київ"),
CALCULATE([Revenue], ALL(Sales[City]))
)
Правильні відповіді: 11 одиниць (3 + 2 + 5 + 1), 2 замовлення і 55,7 % (51 500 з 92 500).
Чи треба вчити DAX, якщо Copilot пише формули
Так: Copilot пришвидшує написання формул, але перевірити, чи правильно вони рахують, може лише людина, яка розуміє контекст фільтра й модель даних. Згенерована міра майже завжди синтаксично коректна — і саме тому помилку в ній легко не помітити.
Copilot у Power BI вміє генерувати DAX — зокрема писати DAX-запити в поданні DAX-запитів. Є умова: за вимогами Microsoft, потрібна платна ємність Fabric (F2 і вище) або Power BI Premium (P1 і вище) — самого безплатного Power BI Desktop для цього недостатньо. Формули також добре пишуть універсальні AI-асистенти, якщо описати їм таблиці та зв'язки.
Три речі, які AI за вас не зробить:
- Не знає вашої моделі. Якщо зв'язок напрямлений не туди або таблиці дат немає, формула буде правильною «взагалі», але неправильною у вашому звіті.
- Не знає бізнес-правил. Виторг рахувати з поверненнями чи без? Із ПДВ? За датою замовлення чи оплати? Це рішення людини.
- Не перевіряє результат. Звірити міру з контрольним числом на маленькій вибірці — як у цій статті — має аналітик.
Практичний висновок: базовий DAX потрібен не для того, щоб набирати формули руками, а щоб ставити AI точну задачу й помічати, коли відповідь хибна. Про те, як AI змінює роботу аналітика загалом, — у матеріалі про професію AI-аугментованого аналітика.
DAX — лише одна з навичок аналітика. Дані в модель потрапляють із баз, тому поруч зазвичай вивчають SQL, а для обробки й автоматизації — Python. Повний маршрут описано у статті про професію аналітика даних.
Часті запитання
Що таке DAX простими словами?
DAX (Data Analysis Expressions) — це мова формул Power BI. Нею описують розрахунки над даними моделі: міри на кшталт виторгу чи середнього чека, обчислювані стовпці та таблиці. Формули схожі на формули Excel, але працюють зі стовпцями й таблицями, а не з клітинками.
Чим DAX відрізняється від формул Excel?
Формула Excel посилається на клітинки й діапазони та повертає значення в одну клітинку. Формула DAX посилається на стовпці й таблиці моделі, а її результат залежить від контексту фільтра: та сама міра показує різні числа в різних рядках візуалу. Багато назв функцій збігаються — SUM, IF, LEFT, — але логіка обчислення інша.
Чим міра відрізняється від обчислюваного стовпця?
Обчислюваний стовпець рахується для кожного рядка таблиці під час оновлення даних і зберігається в моделі. Міра рахується в момент показу у візуалі й враховує поточні фільтри звіту. Показники — виторг, частки, середні — пишуть мірами, а ознаки рядків, за якими фільтрують і групують, — стовпцями.
Яка різниця між SUM і SUMX?
SUM додає значення одного стовпця. SUMX проходить по таблиці рядок за рядком, обчислює вираз для кожного рядка й додає результати. SUMX потрібен, коли в таблиці немає готового стовпця для підсумовування — наприклад, виторг треба порахувати як кількість, помножену на ціну, у кожному рядку.
Що робить функція CALCULATE?
CALCULATE обчислює вираз у зміненому контексті фільтра. Вона може додати умову (виторг лише по Києву), замінити наявний фільтр або зняти його через ALL — наприклад, щоб порахувати частку категорії в загальному виторгу. Це головна функція DAX для показників за умовою та порівняння періодів.
З яких функцій DAX почати новачку?
Почніть з агрегатних функцій SUM, AVERAGE, COUNTROWS і безпечного ділення DIVIDE, далі — логічна IF та ітератор SUMX. Після цього переходьте до CALCULATE з FILTER і ALL, функції RELATED і таблиці дат із CALENDAR. Цього набору вистачає для більшості навчальних і перших робочих звітів.
Чи складно вивчити DAX?
Синтаксис DAX простий: перші міри можна написати першого ж дня. Складність у контексті фільтра — розумінні того, чому та сама формула повертає різні числа в різних місцях звіту. Це приходить із практикою: зазвичай потрібно кілька тижнів регулярної роботи з реальними моделями.
Чи потрібно знати Excel, щоб вивчати DAX?
Формально ні, але досвід з Excel допомагає: логіка функцій IF, SUM і текстових функцій знайома, а зведені таблиці готують до ідеї мір і розрізів. Водночас звичку думати клітинками доведеться змінити на роботу зі стовпцями, таблицями та зв'язками між ними.
Чи можна писати DAX за допомогою Copilot або ChatGPT?
Так, AI-асистенти добре генерують формули DAX за описом таблиць і задачі. Але результат треба перевіряти: AI не знає ваших зв'язків між таблицями та бізнес-правил, тому синтаксично правильна формула може рахувати не те. Базове розуміння DAX потрібне, щоб точно сформулювати задачу й помітити помилку.
Висновок
DAX — це мова, якою в Power BI описують показники: вона працює зі стовпцями й таблицями, а результат кожної міри залежить від контексту фільтра. Щоб упевнено почати, достатньо розібратися в п'яти речах:
- Міра чи стовпець. Показники — мірами, ознаки рядків — стовпцями.
- Агрегати й ітератори.
SUM— для одного стовпця,SUMX— коли рахувати треба в кожному рядку. CALCULATE. Змінює фільтри: додає умову, замінює її або знімає черезALL.- Зв'язки. Правильна модель заощаджує половину формул;
RELATEDпотрібен рідше, ніж здається. - Таблиця дат. Без неї не працюють порівняння періодів.
Далі — практика: відтворіть набір даних зі статті, напишіть кожну міру самостійно й звірте цифри. Якщо хочете пройти цей шлях із викладачем і зворотним зв'язком, є курс Power BI, а для тих, хто планує професію, — курс Data Analytics з модулями Power BI, Python, SQL та AI-інструментів.
Джерела
- Microsoft Learn: DAX overview
- Microsoft Learn: Learn DAX basics in Power BI Desktop
- Microsoft Learn: CALCULATE function
- Microsoft Learn: SUMX function
- Microsoft Learn: DIVIDE function
- Microsoft Learn: RELATED function
- Microsoft Learn: CALENDAR function
- Microsoft Learn: Create date tables in Power BI Desktop
- Microsoft Learn: Use variables to improve your DAX formulas
- Microsoft Learn: DAX query view
- Microsoft Learn: Copilot for Power BI overview
