В прошлом уроке мы сказали: в DAX набор строк для суммы решает «контекст». Звучит абстрактно. Но вы наверняка уже пользовались инструментом, где этот контекст работает на глазах, — сводной таблицей Excel. Это лучший мост к пониманию DAX.
Что делает сводная
Вспомните, как строится сводная. Вы кидаете поле «Сумма» в область значений и выбираете «Сумма по полю». Потом перетаскиваете «Регион» в область строк. И Excel сам, без единой вашей формулы, считает сумму по каждому региону отдельно.
| Регион | Сумма продаж |
|---|---|
| ЦФО | 2 523 688 |
| ПФО | 1 953 284 |
| … | … |
| Общий итог | 9 826 588 |
Вы не писали СУММЕСЛИ под каждый регион. Вы просто сказали «сумма» и «в разрезе региона» — а раскладку по строкам сделала сама сводная.
DAX-мера ведёт себя ровно как значение в сводной. Выручка = SUM(Продажи[Сумма]) — это «сумма по полю Сумма». А «Регион в строках» — это и есть контекст фильтра: в строке ЦФО мера видит только ЦФО, в строке ПФО — только ПФО.
Перенос один в один
Теперь сопоставим области сводной и контекст DAX. Это прямое соответствие:
| В сводной Excel | В Power BI / DAX |
|---|---|
| Поле в области «Значения» | Мера |
| Поле в «Строках» / «Столбцах» | Контекст фильтра (разрез) |
| «Фильтры» сводной, срезы | Срезы и фильтры отчёта |
| «Общий итог» | Мера, посчитанная без разреза |
Когда вы в Power BI кладёте меру Выручка в таблицу и ставите «Регион» в строки — вы делаете ровно то же, что в сводной. Разница только в том, что мера живёт отдельно и её можно переиспользовать, а не пересобирать сводную каждый раз.
«Итого» ведёт себя одинаково
В сводной общий итог Excel тоже считает сам. И для суммы он совпадает со сложением строк, а для среднего или процента — нет: средний чек по всем продажам не равен сумме средних чеков по регионам.
В DAX точно так же: итоговая строка — это та же мера, посчитанная в контексте «все строки сразу», а не арифметическая сумма ячеек. Если когда-нибудь итог «не сойдётся» — вспомните сводную, там ровно та же логика. Подробно разберём это в уроке про контекст фильтра.
Тогда зачем DAX, если есть сводные
Законный вопрос. Сводная отлично считает — но у неё есть потолок, и DAX его снимает.
- Переиспользование. Меру пишете один раз — и кладёте в любой визуал: в таблицу, в карточку, в график, на любую страницу. Сводную каждый раз пересобираете заново.
- Программируемый контекст. Нужна «выручка по молочке независимо от того, что выбрано в отчёте»? В сводной так не сделать. В DAX это функция
CALCULATE— она меняет контекст прямо в мере. - Сложная логика. Нарастающий итог, прошлый год, ABC-классификация, доля от целого — в сводной это костыли, а в DAX штатные приёмы (мы собирали их в генераторе DAX-мер).
Сводная таблица — это DAX без программируемости. Освоили интуицию сводной — вы уже понимаете контекст фильтра. DAX просто убирает потолок: те же разрезы, но мерами, которые переиспользуются и умеют менять контекст.
Что дальше
Интуиция собрана: мера = «значение сводной», разрез = контекст. Теперь напишем первую настоящую меру руками и разберём контекст уже не на сводной, а в самом Power BI.