Найти тему
STO4BI

Как фильтром убирать данные на графике, если на график вынесены столбцы таблицы данных?

Всем привет!

В эфире рубрика технические штучки ) Долго думал как сформулировать название статьи, коротко и лаконично не вышло. Ну да ладно, думаю по тексту будет понятно о чем речь.

Итак у нас есть таблица с данными: количество товаров на складах по датам:

Таблица с данными
Таблица с данными

Далее строим примерно такой график по дате и кол-ву товаров на складах.

График по складам
График по складам

А теперь предположим, что у нас с десяток складов и графики не очень удобно смотреть в такой "каше". Просто вынести в фильтр столбцы мы не можем, Power BI не позволяет так делать. Мы можем вынести отдельный столбец, но при этом элементами фильтра будут строки этого столбца. Нам это не подходит.

У нас возникает задача, как нам сделать фильтр (слайсер), который позволит отключать и включать линии графика?

На самом деле подобные задачи достаточно часто встречаются на практике. И первым делом возникают мысли пойти в Power Query, покрутить данные там и сделать столбцы строками. Но это не самый оптимальный путь. Стоит ли говорить, что кол-во строк в таблице вырастет многократно.

В подобных случаях я поступаю следующим образом:

1) Нужно получить таблицу с названиями ваших столбцов, которые вы выносите на график (в моем случае склады). Если у вас столбцов не много, можно сделать таблицу вручную. Но я рекомендую использовать Power Query. Давайте сделаем это.

Идем в PQ ->дублируем таблицу->понижаем заголовки->транспонируем

Идем в PQ ->дублируем таблицу->понижаем заголовки->транспонируем
Идем в PQ ->дублируем таблицу->понижаем заголовки->транспонируем

Удаляем ненужные столбцы

Удаляем ненужные столбцы.
Удаляем ненужные столбцы.

Устанавливаем фильтр. У меня это слово "склад", у вас может быть свое. Либо выбираете вручную название складов.

Устанавливаем фильтр
Устанавливаем фильтр

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

2) Загружаем таблицу в Power BI и выносим ее в фильтр (слайсер).

Добавляем фильтр (слайсер) в отчет.
Добавляем фильтр (слайсер) в отчет.

Пока нам это не очень помогло. График по прежнему не фильтруется.

Пишем меру:

Склад 1 = IF("Склад 1" IN VALUES('Названия складов'[Склады]),SUM('Склады'[Склад 1]),BLANK())

О чем нам говорит эта мера? Если текст "Склад 1" есть в столбце [Склады], то выводим данные, в противном случае пусто.

Почему она должна работать? Дело в том, что когда вы выбираете склад в фильтре (слайсере), исходная таблица для текущих визуализаций виртуально фильтруется согласно вашему выбору. То есть если вы выбрали "склад 2", то визуализации видят только склад 2 в исходной таблице. В этом случае, первое условие в нашей мере выполнять не будет.

Делаем аналогичные меры для всех складов и выносим их на график

Прописываем меры и выносим их на график
Прописываем меры и выносим их на график

Все работает, график фильтруется. Что и требовалось сделать)

А как бы вы решили подобную задачу?

Буду рад, если эта статься покажется вам полезной и, в знак благодарности, вы подпишитесь на мой канал. Это будет стимулом писать больше статей.