Урок 12 · 9 мин чтения

DAX и сводные таблицы: контекст на интуиции

У DAX-меры есть знакомый родственник — сводная таблица. Через неё «контекст фильтра» становится очевидным.

В прошлом уроке мы сказали: в 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.

«Регион в области строк сводной таблицы» — это в терминах DAX...
Поле в строках сводной задаёт разрез — это и есть контекст фильтра. Мера (как «значение» сводной) пересчитывается в каждой строке по своему контексту, без отдельных формул.
Прогресс сохраняется в вашем браузере.
§ Power BI под ключ

Нужно внедрить
это в компании?

Соберём DWH, модель и дашборды под ваши данные. Бесплатная консультация — 30 минут.

Телефон+7 918 042 34 43