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
- Имена с пробелами в
[квадратных скобках]:[Total Revenue] - Префиксы — необязательно, но
_в начале скрывает в списке:_Helper Measure - Format — у меры можно задать формат (валюта, %, количество знаков)
- Display folder — группируй меры в папки в свойствах поля
Что важно запомнить
- Меры — это формулы, не данные. Каждая открытая страница пересчитывает все меры
- Не используй меры внутри
WHEREилиFILTER-условий калькулируемых столбцов — это создаёт спираль - Для проверки: положи меру в «Карточку», смени слайсеры — должна меняться
- Создавай меры в "технической" таблице
_Measures, а не в fact_Orders — удобнее