Благодаря Битрикс и другим CRM-системам, все привыкли к удобной фильтрации отчётов по датам. В популярных сервисах обычно есть кнопки: "сегодня", "текущая неделя", "текущий месяц" и подобные.
Заказывая разработку отчёта в Power BI, клиенты жаждут видеть знакомые решения с кнопками управления датой. Сегодня разберём как реализовать привычные кнопки управления периодами в Power BI.
Размечаем периоды
Мы уже описывали в статье "Рабочие и выходные дни в Power BI - создаём крутой календарь" как подтянуть данные для таблицы дат по API с сайта Консультант Плюс. После создания календаря, нам понадобится вернуться в модель данных и добавить несколько новых столбцов.
Логика этого метода разметки проста - нужно создать столбцы, в которых будет выполняться условие на проверку принадлежности даты необходимому периоду. Например, эта статья была написана в начале ноября, поэтому на скриншоте TRUE в столбце "Текущая неделя" проставились именно ноябрю.
Мы подготовили DAX формулы для типовых столбцов календаря, иные периоды можно сделать по аналогии:
Период | DAX формула |
Сегодня | 'Calendar'[Date]=TODAY() |
Вчера | TODAY()-1='Calendar'[Date] |
Текущая неделя | WEEKNUM('Calendar'[Date],2)=WEEKNUM(TODAY(),2) |
Прошлая неделя | WEEKNUM('Calendar'[Date],2) = WEEKNUM(TODAY(),2)-1 |
Текущий месяц | AND( 'Calendar'[#Month]=MONTH(TODAY()), 'Calendar'[Year]=YEAR(TODAY()) ) |
Прошлый месяц | AND( MONTH('Calendar'[Date]) = MONTH(TODAY())-1, 'Calendar'[Year]=YEAR(TODAY()) ) |
Предыдущие 7 дней от сегодня | AND( TODAY()>'Calendar'[Date], TODAY()-7<='Calendar'[Date] ) |
Готовим переключатель CalculationGroup( )
Нам нужно создать параметр для вычисления сразу всех расчетных показателей в отчёте за выбранные периоды. В этом нам поможет внешний инструмент Power BI - Tabular Editor 2. Подробно инструкцию по добавлению новой расчетной группы мы описали в статье "DAX + Calculation Groups: переключатель мер Power BI". Если кратко - вам нужно выполнить действия со скриншота ниже:
В каждом Calculation Items нужно создать следующее измерение:
CALCULATE (
SELECTEDMEASURE (),
TREATAS (
{
TRUE
},
Calendar[Сегодня]
)
)
Первым аргументом функции Calculate ( ) выступает оператор Selectedmesure ( ). Он позволит применять фильтр ко всем мерам, которые будут на листе отчета. Обращаем внимание, что данный способ действует именно на меры. Второй аргумент избирает только TRUE ( ) значение из указанного столбца [Сегодня].
Для каждого вычисляемого столбца календаря вам необходимо будет написать такие Item, меняя только последнюю часть с выбором столбца [Сегодня] на другое имя столбца.
Анонсы всех видео, статей и полезностей - в нашем Telegram🔥
Присоединяйтесь, обсуждайте и автоматизируйте!
После применения изменений и обновления запроса в Power BI появится таблица с наименованием периода и рангом:
Чтобы сделать кнопки, помещаем столбец Name из этой таблицы в срез и в свойствах визуала устанавливаем параметр Ориентация = "По горизонтали".
В график добавляем меры выручки (или любой другой расчетный показатель), в ось Х столбец Calendar [Date]. Готово, теперь любой график с измерениями будет автоматически менять период в зависимости от вашего выбора на срезе!
Заключение
Сегодня мы рассмотрели как работать с относительным периодом в Power BI, используя DAX и немного хитрости с Calculation Group. Используйте этот способ, чтобы упростить работу с вычислениями и радовать заказчика понятным и удобным интерфейсом!
Комментарии