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
