← К списку уроков
Power BI·Лёгкий·12 мин

DAX: создание мер

Что такое DAX-мера, как её создавать, отличие от calculated column.

DAX: создание мер

Мера (Measure) — это вычисление в Power BI, которое выполняется в текущем контексте фильтрации. Это сердце DAX и всей продуктовой аналитики.

Мера vs вычисляемый столбец

МераCalculated Column
Вычисляется при показеВычисляется в каждой строке
Не хранитсяХранится в модели
Зависит от фильтров на страницеНе зависит
Для агрегаций (сумма, среднее)Для категорий, ключей

Правило: всё что хочешь видеть в карточках/визуалах — мера. Всё что используешь в фильтрах — вычисляемый столбец.

Базовый синтаксис

Total Revenue = SUM( fact_Orders[Sales] )

После создания меры — переноси в визуал. Power BI пересчитает в зависимости от выбранных фильтров.

5 must-have мер

Total Revenue = SUM( fact_Orders[Sales] )

Total Profit = SUM( fact_Orders[Profit] )

Profit Margin % =
DIVIDE(
    [Total Profit],
    [Total Revenue],
    0
)

Total Orders = DISTINCTCOUNT( fact_Orders[OrderID] )

Avg Order Value = DIVIDE([Total Revenue], [Total Orders])

Почему DIVIDE а не /

DIVIDE(a, b, 0) — безопасное деление: если b = 0, возвращает 0 вместо #DIV/0!.

Контекст вычисления

Когда мера в визуале — она вычисляется в текущем контексте (выбранный год, регион, категория). Поэтому одна мера Total Revenue показывает разные значения в разных слайсерах.

Это и есть магия мер: пишешь раз, используешь везде, автоматически реагирует на фильтры.

Best practices

  1. Имена с пробелами в [квадратных скобках]: [Total Revenue]
  2. Префиксы — необязательно, но _ в начале скрывает в списке: _Helper Measure
  3. Format — у меры можно задать формат (валюта, %, количество знаков)
  4. Display folder — группируй меры в папки в свойствах поля

Что важно запомнить

  • Меры — это формулы, не данные. Каждая открытая страница пересчитывает все меры
  • Не используй меры внутри WHERE или FILTER-условий калькулируемых столбцов — это создаёт спираль
  • Для проверки: положи меру в «Карточку», смени слайсеры — должна меняться
  • Создавай меры в "технической" таблице _Measures, а не в fact_Orders — удобнее