Visualisations
September 29, 2021

Синхронизация срезов по разным измерениям

#PowerBI предоставляет множество возможностей для создания отчётов. И каждый месяц, с каждым обновлением их становится всё больше. Но далеко не все мы используем или даже не подозреваем о них. Например, вы скорее всего знаете, что срезы, которые используются для фильтрации, можно синхронизировать между страницами. Но многие ли знают, что срезы можно синхронизировать внутри одной группы визуальных элементов? И как раз это свойство можно использовать для решения следующего сценария:

Имеются два среза: Категория и Цвет. Одна категория может включать в себя несколько цветов и один цвет может входить в несколько категорий. Необходимо, чтобы при изменении выбора в одном срезе сбрасывался фильтр в другом и была возможность выбрать непересекающееся значение.
Пример набора данных со стандартным поведением срезов

При выборе цвета Grey происходит фильтрация среза Категория, в котором остается только одно значение, как и в таблице:

Цвет фильтрует Категорию

Это происходит потому, что и Категория, и Цвет являются атрибутами товара и находятся в одном справочнике:

Справочник Products

Так как срез Цвет фильтрует срез Категория, пользователь не может выбрать другую категорию, пока не сбросит фильтр по цвету. Мы можем изменить взаимодействие между срезами, чтобы они не фильтровали друг друга, а только таблицу:

Изменение взаимодействия срезов

Но тут возникает ситуация, когда фильтр одного среза противоречит фильтру другого из-за чего в таблице возвращается пустота:

Контекст вычисления возвращает пустоту

Чтобы исправить выше указанные недочёты, воспользуемся свойством синхронизации срезов в группе.

Для создания группы выберем оба среза, нажмём правой клавишей мыши и выберем "Группировать"

Группировка срезов

В панели Выбор можно переименовать созданную группу или добавить в неё другие визуальные элементы

Управление визуальными элементами

Затем открываем панель синхронизации (вкладка "Представление" - "Синхронизировать срезы"). Выбираем срез, в панели синхронизации раскрываем дополнительные параметры и указываем название группы, в которой находятся срезы

Настройка синхронизации

Протестируем взаимодействие выбрав в срезе Цвет значение Grey

Результат после синхронизации

Как видно - результат не тот, который мы ожидали: в таблице пусто, а в срезе Категория появилось значение Grey. Такой категории у нас естественно нет, поэтому в таблице мы получаем пустоту.

Самое близкое сравнение, которое мне приходит для такой синхронизации - это UNION, когда один набор объединяется с другим (друг под друга). Хотя мы ожидаем, что наборы будут связаны (JOIN) друг с другом, то есть будут рядом, как это выглядит в таблице.

Чтобы добиться такого поведения, пойдём на небольшую хитрость - добавим в срезы второе измерение, получив иерархический срез, но перед добавлением необходимо снять галочку "Синхронизировать изменение полей с другими срезами":

Настройка среза по Категории
Настройка среза Цвет

Протестируем взаимодействие снова выбрав в срезе Цвет значение Grey

Результат после синхронизации

На этот раз и в таблице, и в срезе Категория мы видим ожидаемый результат. Выберем категорию Bikes

После выбора категории

Как видно в таблице осталась только выбранная категория, а фильтр в срезе Цвет сбросился. Единственный момент, который остался - это "шевроны", которые дают пользователю возможность развернуть иерархию. Здесь всё зависит от потребностей и желаний. Можно оставить эту возможность, а можно аккуратно добавить сверху прямоугольник, который закроет "шевроны" и возможность развернуть иерархию. Главное правильно настроить порядок слоёв.

Скрываем "шевроны"

Как всегда отчёт, чтобы посмотреть

И файл, чтобы "пощупать"