·Сложный·~12 мин
DAX: доля выручки категории от общего итога
Сценарий
В отчёте Power BI таблица orders содержит поля amount и внешний ключ product_id. Таблица products содержит поле category. Обе таблицы связаны.
В матрице отчёта по строкам расположены категории товаров. Мера Выручка = SUM(orders[amount]) уже создана и показывает выручку по каждой категории с учётом фильтра.
Тебе нужна мера «Доля выручки», которая показывает, какой процент от общей выручки приходится на каждую категорию.
Задача
- Напиши DAX-формулу для меры «Доля выручки».
- Объясни, зачем здесь нужна функция ALL().
Ожидаемый ответ
Формула:
Доля выручки =
DIVIDE(
[Выручка],
CALCULATE([Выручка], ALL(products[category]))
)
Как это работает:
| выражение | что делает |
|---|---|
[Выручка] | выручка текущей категории (с фильтром из контекста строки) |
ALL(products[category]) | снимает фильтр по полю category — берёт все категории |
CALCULATE([Выручка], ALL(...)) | выручка всех категорий = общий итог |
DIVIDE(числитель, знаменатель) | делит, безопасно обрабатывая деление на ноль |
Зачем ALL():
Без ALL() знаменатель тоже фильтровался бы по текущей категории — и каждая строка показывала бы 100%. ALL() явно говорит DAX: «игнорируй фильтр по категории при вычислении знаменателя».
Пример результата в матрице:
| категория | Выручка (₸) | Доля выручки |
|---|---|---|
| Электроника | 1 200 000 | 48% |
| Одежда | 800 000 | 32% |
| Продукты | 500 000 | 20% |
| Итого | 2 500 000 | 100% |
Эта задача — на изучение. Sandbox для появится в следующей фазе.