DAX — язык формул Power BI. Со стороны он пугает: десятки функций, контекст, какие-то CALCULATE. Но первая полезная мера пишется одной строкой, и с неё стоит начать.
Мера против столбца
Сначала развилка, на которой спотыкаются все новички: мера или вычисляемый столбец?
Вычисляемый столбец считается один раз при обновлении и физически лежит в таблице — значение в каждой строке. Занимает память, раздувает модель.
Мера считается на лету, в момент показа, под текущие фильтры отчёта. Памяти почти не ест. Выручка, маржа, средний чек, % выполнения плана — это всё меры.
Если считаете агрегат (сумму, среднее, долю) — это мера. Вычисляемый столбец берите редко: когда значение нужно для строки таблицы, для среза или для связи. Сомневаетесь — начинайте с меры.
Первая мера
Возьмём таблицу продаж со столбцом «Сумма». Выручка — это сумма по всем видимым строкам:
Выручка = SUM ( Продажи[Сумма] )
Всё. Это рабочая мера. Положите её в карточку — увидите общую выручку. Положите рядом срез по региону — она сама пересчитается по выбранному региону. Вы не писали ни одного условия «если регион такой-то» — фильтр приходит из отчёта, мера просто реагирует.
Отношение — через DIVIDE
Второй кирпич — отношения: средний чек, конверсия, доля. Тут есть ловушка: обычное деление падает, если знаменатель ноль. В DAX для этого есть DIVIDE:
Средний чек =
DIVIDE ( [Выручка], [Количество заказов] )
DIVIDE сам обработает деление на ноль и вернёт пусто вместо ошибки. Привыкайте писать деление только так — это первая хорошая привычка в DAX.
[Выручка] / [Количество заказов] сломает отчёт в первой же строке, где заказов нет. DIVIDE — безопасно. Разница в надёжности, а пишется столько же.
Имена, которые читаются
Называйте меры так, чтобы тип агрегата был виден сразу: Выручка, Средняя выручка, Выручка YTD, Выручка YoY %. Через полгода вы скажете спасибо себе за Средний чек вместо Мера3.
Подсказка: не пишите рутину руками
Типовые меры — прошлый год, нарастающий итог, % от целого, ABC — пишутся по устоявшимся шаблонам. Собрать такую с подстановкой ваших таблиц и колонок можно в нашем генераторе DAX-мер: выбираете паттерн — получаете готовую формулу с VAR/RETURN и DIVIDE.
Что дальше
Мера написана и сама реагирует на фильтры отчёта — это почти магия. В следующем уроке разберём, как именно она это делает: что такое контекст фильтра и почему одна и та же мера в разных ячейках даёт разные числа.