Всем привет!
В эфире рубрика технические штучки ) Долго думал как сформулировать название статьи, коротко и лаконично не вышло. Ну да ладно, думаю по тексту будет понятно о чем речь.
Итак у нас есть таблица с данными: количество товаров на складах по датам:
Далее строим примерно такой график по дате и кол-ву товаров на складах.
А теперь предположим, что у нас с десяток складов и графики не очень удобно смотреть в такой "каше". Просто вынести в фильтр столбцы мы не можем, Power BI не позволяет так делать. Мы можем вынести отдельный столбец, но при этом элементами фильтра будут строки этого столбца. Нам это не подходит.
У нас возникает задача, как нам сделать фильтр (слайсер), который позволит отключать и включать линии графика?
На самом деле подобные задачи достаточно часто встречаются на практике. И первым делом возникают мысли пойти в Power Query, покрутить данные там и сделать столбцы строками. Но это не самый оптимальный путь. Стоит ли говорить, что кол-во строк в таблице вырастет многократно.
В подобных случаях я поступаю следующим образом:
1) Нужно получить таблицу с названиями ваших столбцов, которые вы выносите на график (в моем случае склады). Если у вас столбцов не много, можно сделать таблицу вручную. Но я рекомендую использовать Power Query. Давайте сделаем это.
Идем в PQ ->дублируем таблицу->понижаем заголовки->транспонируем
Удаляем ненужные столбцы
Устанавливаем фильтр. У меня это слово "склад", у вас может быть свое. Либо выбираете вручную название складов.
В итоге получим таблицу с названием складов. Хотелось бы отметить, что если возможность выбрать названия столбцов по какому-то общему принципу, то надо это делать, в этом случае, если появится новый склад, он автоматически попадет в таблицу.
2) Загружаем таблицу в Power BI и выносим ее в фильтр (слайсер).
Пока нам это не очень помогло. График по прежнему не фильтруется.
Пишем меру:
Склад 1 = IF("Склад 1" IN VALUES('Названия складов'[Склады]),SUM('Склады'[Склад 1]),BLANK())
О чем нам говорит эта мера? Если текст "Склад 1" есть в столбце [Склады], то выводим данные, в противном случае пусто.
Почему она должна работать? Дело в том, что когда вы выбираете склад в фильтре (слайсере), исходная таблица для текущих визуализаций виртуально фильтруется согласно вашему выбору. То есть если вы выбрали "склад 2", то визуализации видят только склад 2 в исходной таблице. В этом случае, первое условие в нашей мере выполнять не будет.
Делаем аналогичные меры для всех складов и выносим их на график
Все работает, график фильтруется. Что и требовалось сделать)
А как бы вы решили подобную задачу?
Буду рад, если эта статься покажется вам полезной и, в знак благодарности, вы подпишитесь на мой канал. Это будет стимулом писать больше статей.