Переключение/включение мер в визуализации. Часть 2.
Это вторая часть статьи, в которой я расскажу как решить данную задачу с помощью Calculation group. Первую часть статьи, о решении с помощью функции SWITCH можно прочитать по ссылке.
Напомню два сценария, которые мы постараемся решить:
Как на диаграмме или в таблице сделать переключение мер, чтобы пользователь мог выбирать какую меру смотреть, например: Объем, Оборот, или Прибыль?
Как предоставить пользователю возможность выбора какие несколько мер показать в диаграмме?
Ещё раз посмотрим на модель данных:
В предыдущем решении с помощью функции SWITCH нам необходимо было создать вспомогательную таблицу и специальную меру. Решение с Calculation group очень похоже. И даже, когда мы создаём CG, за кулисами движка по сути тоже создается вспомогательная таблица. Она конечно отличается от простой таблицы, которую мы создавали в PowerQuery, но выглядеть будет очень похоже.
Для создания CG открываем Tabular Editor
Если ещё не работаете с ним, то можно скачать по ссылке
Нажимаем ALT+7 для создания CG или правой клавишей мыши по папке Table
Затем создаём Calculation Items, которые и будут отвечать за переключение мер:
Так как меры у нас четыре, то и Items нам необходимо будет создать четыре.
Для SUM Order Qty будем использовать функцию SELECTEDMEASURE (),которая возвращает значение меры находящейся в контексте, так как именно мера с таким названием будет у нас в визуализации в значениях.
Для всех остальных Items мы укажем соответствующие им меры, которые уже имеются у нас в модели.
Для меры [% Profit] дополнительно ещё задаём параметр "Format String Expression" вида "0%", чтобы отформатировать меру в виде процентов.
Обратите также внимание на выделенный параметр Ordinal. Данный параметр отвечает за порядок ваших Calculation Items. По умолчанию он равен -1, то есть сортировка отсутствует и в визуальных элементах будет осуществляться по алфавиту. Но, мы можем задать этот порядок принудительно просто указав для каждого Items этот параметр начиная с 0. Либо просто перетаскивая мышкой Items и переставляя их в Tabular Editor.
После того, как создали все необходимые Items и задали все необходимые параметры - сохраняем изменения в модели
Как я и говорил в начале, CG за "кулисами" тоже создают вспомогательные таблицы, очень похожие на ту, которую мы делали самостоятельно.
Переходим к созданию визуализаций.
Сначала создадим срез с единичным выбором.
Далее создаем график и помещаем на ось месяцы, а в значения меру [SUM Order Qty]
Как видно на скриншоте, при переключении показателя график изменился, хотя в поле "Значения" у нас находится обычная мера
[SUM Order Qty] = SUM(Sales[OrderQty])
И главное отличие решения с Calculation group от SWITCH - при выборе меры [% Profit] на графике показываются значения и они отформатированы как проценты, благодаря тому, что для данного Items мы задали собственный формат в параметре Format String Expression
Точно также меняется и значение в таблице. Но, если внимательно посмотреть на подписи в диаграмме и в таблице, то можно увидеть, что там у нас по прежнему написано [SUM Order Qty], то есть название той меры, которую мы поместили в значения.
Для таблицы это решается очень просто: Меняем тип визуализации с таблицы на матрицу, а в названия столбцов помещаем столбец с названиями мер из таблицы созданной CG
Для изменения названия диаграммы придётся создать дополнительную меру и использовать её в условном форматировании
Я использую функцию CONCATENATEX, которая соединяет все выбранные значения через запятую, чтобы затем использовать её также и для второго сценария.
Дополнительно нам понадобится модифицировать Calculation Items, чтобы при переключении выбранной меры, мера [Headers] всегда считалась по своему сценарию, так как Calculation group влияют на все меры визуализации.
Проверяем получившийся результат
Первый сценарий успешно решён, переходим ко второму.
Настроим срез с выбором мер. В этот раз необходимо будет отключить множественный выбор с помощью CTRL, чтобы пользователю было удобнее осуществлять выбор просто проставляя галочки.
Если мы добавим в диаграмму и таблицу все наши меры, то при множественном выборе Calculation group всё равно будет показывать все меры и в диаграмме и в таблице:
Если же выбрать одну меру, то в диаграмме будет показываться верно, а в таблице будут отображаться все меры с одинаковым значением
Поэтому изменим наши визуализации. В диаграмму добавим условные обозначения, а таблицу заменим на матрицу, где в столбцах будут названия мер из таблицы созданной Calculation group. И оставим в визуализациях только одну меру [SUM Order Qty]:
Обратите внимание на название нижней диаграммы. Выбранные показатели перечисляются в ней через запятую, благодаря ранее созданной мере [Headers].
А матрица содержит только два столбца с выбранными мерами, то есть пользователь сам выбирает, сколько и каких мер ему одновременно смотреть, что позволит каждому найти свои взаимосвязи.
Во всех текущих проектах я стараюсь использовать решение с Calculation group. Так как оно более гибкое в плане форматирования.
Но, если вам надо переключать показатели, которые всегда в одном формате, или вы используете старую версию PowerBI
Такое часто встречается у тех, кто использует версию Report Server. Так как ИТ службы бывают очень консервативны и по долгу не обновляют версии. А поддержка редактирования с помощью Tabular Editor в PowerBI Report Server появилась только с версии январь'2021.
Или вы хотите сделать переключение мер с помощью среза в модели Power Pivot в Excel, тогда вы можете использовать решение с помощью SWITCH из первой части данной статьи.