Prog Academy
RU UA
DAX для початківців: що це, базові функції та приклади формул у Power BI
Data Analytics

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 у роботі зі звітом має такий вигляд:

1. ДжерелаФайли Excel, бази даних, CRM, Google Таблиці
→
2. Power QueryЗавантаження, очищення та трансформація даних
→
3. Модель і DAXЗв'язки між таблицями, міри та обчислювані стовпці
→
4. ЗвітВізуали показують міри в потрібних розрізах

DAX чи формули Excel: у чому різниця

Головна різниця: формула Excel посилається на клітинки й діапазони, а формула DAX — на стовпці й таблиці, і рахується в контексті фільтрів звіту. У DAX немає адреси A1: не можна «взяти значення з рядка вище» або «з клітинки праворуч».

КритерійФормули ExcelDAX
На що посилається формулаКлітинки й діапазони: A2, B2:B100Стовпці й таблиці: Sales[Quantity], Sales
Де живе результатУ клітинці, куди введено формулуУ мірі або стовпці, які використовуються в усьому звіті
Від чого залежить результатВід значень у клітинкахВід даних і від контексту: фільтрів, зрізів, рядків візуалу
Зв'язок між таблицямиПошук значень: VLOOKUP, XLOOKUPЗв'язки в моделі; за потреби — RELATED
Умовні сумиSUMIFS, COUNTIFSCALCULATE з умовами фільтра
Схожі функціїSUM, AVERAGE, MIN, MAX, IF, LEFT, RIGHT, MID, TRIM — назви однакові, але в DAX агрегатні функції приймають стовпець, а не діапазон

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

Набір даних для прикладів

Візьмемо невеликий магазин техніки. У моделі дві таблиці: Sales (продажі) та Products (довідник товарів). Вони пов'язані за стовпцем ProductID зв'язком «один до багатьох»: один товар — багато продажів.

Таблиця Products

ProductIDProductCategory
1НоутбукТехніка
2МишкаАксесуари
3КлавіатураАксесуари
4МоніторТехніка

Таблиця Sales

OrderIDDateProductIDQuantityPriceCity
105.01.20261130 000Київ
212.01.202623500Львів
320.01.2026321 500Київ
403.02.2026418 000Одеса
514.02.202625500Київ
625.02.20261130 000Львів
702.03.2026311 500Одеса
818.03.2026428 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])

Як це рахується крок за кроком:

OrderIDQuantityPriceQuantity × Price
1130 00030 000
235001 500
321 5003 000
418 0008 000
555002 500
6130 00030 000
711 5001 500
828 00016 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))
)

У таблиці за категоріями міра покаже:

CategoryRevenueRevenue Share
Техніка84 00090,8 %
Аксесуари8 5009,2 %
Разом92 500100 %

Логіка така. У рядку «Техніка» чисельник [Revenue] рахується у фільтрі цієї категорії — 84 000. У знаменнику ALL(Products) знімає фільтр із таблиці товарів, тому [Revenue] рахується за всіма категоріями — 92 500. Споріднена функція ALLEXCEPT знімає всі фільтри з таблиці, крім указаних стовпців.

Як читати CALCULATE

Читайте формулу з кінця: спочатку — «за яких умов» (аргументи-фільтри), потім — «що рахувати» (перший аргумент). CALCULATE([Revenue], Sales[City] = "Київ") — це «залиш тільки Київ і порахуй виторг».

BI

DAX найшвидше вчиться на реальних звітах

На курсі Power BI у Prog Academy ви проходите шлях від Power Query та моделі даних до функцій DAX і готового дашборду — з практикою, домашніми завданнями та портфоліо за 2 місяці.

Програма курсу Power BI →

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] = "Техніка"). Обидві формули правильні; друга простіша, і саме її варто обирати, коли умова — це порівняння стовпця зі значенням.

Чи потрібен RELATED завжди?

Ні. Якщо таблиці пов'язані, фільтр із довідника сам поширюється на таблицю продажів: ставите 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)
)

У таблиці за місяцями ці міри повернуть:

МісяцьRevenueRevenue YTDRevenue Previous Month
Січень34 50034 500—
Лютий40 50075 00034 500
Березень17 50092 50040 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 — не синтаксичні, а логічні: формула працює, але рахує не те. Ось сім, які трапляються найчастіше.

  1. Обчислюваний стовпець замість міри. Звичка з Excel — додати стовпець на будь-який випадок. У Power BI це збільшує модель, а частки й середні, пораховані в стовпці, у підсумках дають хибні цифри. Показники пишіть мірами.
  2. SUM там, де потрібен SUMX. Добуток сум не дорівнює сумі добутків: 1 280 000 замість 92 500 у прикладі вище.
  3. Ділення оператором /. Порожній місяць або нульовий знаменник — і у візуалі з'являється помилка чи нескінченність. DIVIDE розв'язує це одним аргументом.
  4. Немає зв'язку між таблицями. Якщо міра показує однакове число в кожному рядку таблиці, найчастіше причина не у формулі, а в моделі: зв'язку немає, або він неактивний чи напрямлений не туди.
  5. Дати з таблиці фактів замість календаря. Функції часової аналітики очікують окрему таблицю дат із безперервним діапазоном, позначену як таблиця дат.
  6. Посилання без назви таблиці. Загальноприйнята домовленість: стовпці пишуть із таблицею — Sales[Price], міри без таблиці — [Revenue]. Тоді з формули одразу видно, де стовпець, а де міра.
  7. Одна формула на двадцять рядків без змінних. Розбийте її на прості міри та VAR — і помилку стане видно.

Практичне завдання

Спробуйте написати три міри на тому самому наборі даних, а потім звірте з відповідями.

  1. Кількість проданих одиниць у категорії «Аксесуари».
  2. Кількість замовлень зі Львова.
  3. Частка Києва в загальному виторгу.
Показати розв'язок
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 описують показники: вона працює зі стовпцями й таблицями, а результат кожної міри залежить від контексту фільтра. Щоб упевнено почати, достатньо розібратися в п'яти речах:

  1. Міра чи стовпець. Показники — мірами, ознаки рядків — стовпцями.
  2. Агрегати й ітератори. SUM — для одного стовпця, SUMX — коли рахувати треба в кожному рядку.
  3. CALCULATE. Змінює фільтри: додає умову, замінює її або знімає через ALL.
  4. Зв'язки. Правильна модель заощаджує половину формул; RELATED потрібен рідше, ніж здається.
  5. Таблиця дат. Без неї не працюють порівняння періодів.

Далі — практика: відтворіть набір даних зі статті, напишіть кожну міру самостійно й звірте цифри. Якщо хочете пройти цей шлях із викладачем і зворотним зв'язком, є курс Power BI, а для тих, хто планує професію, — курс Data Analytics з модулями Power BI, Python, SQL та AI-інструментів.

Джерела

Вивчити Power BI і DAX →

Фото автора: Олена Булига

Про автора

Тренер Prog Academy з Power BI, викладач вищої школи

Викладач вищої школи: викладала комп’ютерні науки в НТУ та бізнес-аналітику Power BI в університеті КРОК. Співпрацює з бізнесом у сфері аналітики даних; у блозі пише про Power BI, DAX і візуалізацію даних.

Контакт

Записатися на консультацію

Вкажіть актуальний номер, ми зателефонуємо в будь яку країну :)