При работе с Power BI мы часто сталкиваемся с задачей быстрого переключения показателей на визуальном элементе. Сейчас нам нужны клики, а через минуту - уже расходы. Место в отчёте не бесконечно, да и выбирать меру в отдельном фильтре - довольно удобно.
Можно переключать меры с помощью персонализации Power BI, но персонализация - не самый удобный способ для пользователей отчёта. Для эффективной персонализации пользователь должен знать внутреннюю структуру отчёта и понимать какие меры в каком месте можно использовать.
Список мер в фильтре - гораздо удобнее в применении и не загружает пользователя лишней информацией. Давайте разберемся как сделать переключатель меры в фильтре с помощью формул IF ( ), Switch ( ), а также Calculation groups и Параметра Поля.
IF() в DAX для создания переключателя мер
Начнем погружение с самого древнего способа - с помощью оператора IF ( ). Для этого нужно создать справочник названий всех мер, с которыми будет работать заказчик. Через пункт меню "Введите данные" заполняем левый столбец наименованиями, а правый нам нужен для упрощения работы с мерой - его мы просто заполняем цифрами от 1 до N:
Далее создаем меру, которая будет выдавать селективный результат в зависимости от фильтра. Суть измерения проста: если выбрано 1-е значение - считаем 1-й результат, иначе если выбрано 2-е значение - считаем 2-й результат и так далее:
IF переключатель =
IF(
SELECTEDVALUE('Таблица значений'[№])=1,
SUM('Факты продаж'[Выручка]),
IF(
SELECTEDVALUE('Таблица значений'[№])=2,
SUM('Факты продаж'[Прибыль]),
DIVIDE(
SUM('Факты продаж'[Прибыль]),
SUM('Факты продаж'[Выручка])
)
)
)
Помещаем вычисление в значение графика, а список значений в Срез. Теперь мы можем изменять суть графика в зависимости от выбора на срезе. Однако, такой способ не оптимален, так как каждый раз при применении фильтра выполняется каждый шаг алгоритма сравнения - для каждого IF.
SWITCH() в DAX и его преимущества
Переключатель для графиков и таблиц с помощью Switch ( ) оператора работает в разы быстрее IF ( ) из-за сравнения со списком значений, а не шаговым выполнением запроса. При этом код выглядит более удобным для понимания и контроля:
Switch переключатель =
SWITCH(
SELECTEDVALUE('Таблица значений'[№]),
1, SUM('Факты продаж'[Выручка]),
2, SUM('Факты продаж'[Прибыль]),
3, DIVIDE(SUM('Факты продаж'[Выручка]),SUM('Факты продаж'[Прибыль]))
)
Основное отличие от оператора IF ( ) заключается в множественном выборе показателей для вывода на график. Для отображения вам нужно поместить в условные обозначения гистограммы значения из нашей таблицы - переключателя:
Параметр Поля в Power BI
В новых релизах от Майкрософт (май 2022 и позднее) появилась функция создания переключателя с помощью интерфейсных кнопок. Теперь для создания переключателя вычисляемых значений вы можете перейти на вкладку "Моделирование" и создать параметр "Поля":
В открывшемся окне перетащите меры, которые вы планируете переключать между собой, в левую часть формы:
После нажатия кнопки "Создать", Power BI автоматически добавит виртуальную таблицу, состоящую из одного столбца. Код этой таблицы не похож на обычный синтаксис DAX:
Параметр = {
("Выручка", NAMEOF('!KEY_MEASURE'[Выручка]), 0),
("Прибыль", NAMEOF('!KEY_MEASURE'[Прибыль]), 1),
("% Рентабельности", NAMEOF('!KEY_MEASURE'[% Рентабельности]), 2)
}
Этот столбец вы можете помещать как в срез, так и в график - условные обозначения также будут отображаться корректно:
Если в будущем к расчетам добавятся новые показатели (ведь хотелки клиента меняются постоянно), просто допишите их в код вычисляемого столбца аналогично старым.
Tabular Editor и Calculation Groups
Анонсы всех видео, статей и полезностей - в нашем Telegram-канале🔥
Присоединяйтесь, обсуждайте и автоматизируйте!
Для тех, кто уже знаком с инструментом внешней разработки Tabular Editor, мы предлагаем четвертый способ решения. Откройте инструмент и добавьте новую таблицу через правый клик мышки:
Затем, в Calculation Group создайте новый элемент Calculation Item:
Для примера, мы будем использовать оператор TOTALMTD ( ) для подсчета итогов вычисления за месяц. Обратите внимание на структуру меры - первым аргументом оператора мы выставляем SELECTEDVALUE ( ) для подстановки в расчет любого значения:
TOTALMTD( SELECTEDMEASURE( ) , 'Даты заказов'[Дата] )
После создания сохраните его и перейдите в Power BI, нажмите «Обновить», и появится ваша новая таблица. Теперь всё, что вам нужно сделать, это использовать на холсте отчета визуальный элемент по вашему выбору. В данном примере мы добавили обычную меру "Выручка", чтобы она отображалась на визуальном элементе:
Данный способ поможет сократить написание дублирующих мер для расчета средних значений, а также нарастающих итогов по временным срезам (и не только).
Заключение
Мы рассмотрели 4 способа создания переключателей меры в Power BI при помощи DAX: IF(), SWITCH(), Параметр Поля, Calculation groups.
Вы можете применять эти способы для эргономичного размещения информации на макете отчета, а также экономить свое время на расчетах агрегированных показателей.
А для особо прокаченных пользователей - просто включите персонализацию 😊.
Это позволит им вносить любые изменения в отчёт, а вам не придётся париться над фильтрами переключения мер;)
Комментарии