Календарь 2.0 в Power BI: динамические периоды и даты - день, неделя, месяц

Календарь 2.0 в Power BI: динамические периоды и даты - день, неделя, месяц

Благодаря Битрикс и другим 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. Используйте этот способ, чтобы упростить работу с вычислениями и радовать заказчика понятным и удобным интерфейсом!

Комментарии