Онлайн школа Аналитики и Данных

Расширенная разметка периодов в Power BI

Расширенная разметка периодов в Power BI


Сегодня мы рассмотрим такую проблему, как ручная разметка периодов даты, которая позволит «по нажатию одной кнопки» получать необходимый результат. 

Вообще, в Power BI все это решается при помощи элемента визуализации “Slicer” (“Срез”), работающего в относительном режиме, но вот, например, на промежутке «недели» он работает не совсем корректно. К тому же, подобные атрибуты часто используются в дальнейших расчетах, потому необходимо предварительно обработать столбец даты. 

 

Пример: 

В качестве исходных данных имеется набор, содержащий всего один столбец “Дата”, данные, содержащиеся в столбце – это просто случайный список дат: 



Задача: 

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

 

Процесс обработки: 

  • Формула столбца “Метка года” может выглядеть следующим образом: 

Метка года =  

VAR _StartingPoint = 

   TODAY () 

VAR _CurrentYear = 

   YEAR ( 'Список дат'[Дата] ) = YEAR ( _StartingPoint ) 

VAR _LastYear = 

   YEAR ( 'Список дат'[Дата] ) 

       = YEAR ( _StartingPoint ) - 1 

VAR _FutureYear = 

   YEAR ( 'Список дат'[Дата] ) 

       = YEAR ( _StartingPoint ) + 1 

RETURN 

   SWITCH ( 

       TRUE (), 

       _CurrentYear, "Текущий год", 

       _LastYear, "Прошлый год", 

       _FutureYear, "Следующий год", 

       "Прочее" 

   ) 

Данный столбец будет содержать в себе распределение даты по категориям в разрезе лет. 

 

  • Формула столбца “Метка квартала” : 

Метка квартала =  

VAR _StartingPoint = 

   TODAY () 

VAR _CurrentYear = 

   YEAR ( 'Список дат'[Дата] ) = YEAR ( _StartingPoint ) 

VAR _CurrentQuarter = 

   QUARTER ( 'Список дат'[Дата] ) = QUARTER ( _StartingPoint ) 

       && _CurrentYear = TRUE () 

VAR _LastQuarter = 

   QUARTER ( 'Список дат'[Дата] ) 

       = QUARTER ( _StartingPoint ) - 1 

       && _CurrentYear = TRUE () 

VAR _FutureQuarter = 

   QUARTER ( 'Список дат'[Дата] ) 

       = QUARTER ( _StartingPoint ) + 1 

       && _CurrentYear = TRUE () 

RETURN 

   SWITCH ( 

       TRUE (), 

       _CurrentQuarter, "Текущий квартал", 

       _LastQuarter, "Прошлый квартал", 

       _FutureQuarter, "Следующий квартал", 

       "Прочее" 

   ) 

 

  • Формула столбца “Метка месяца”: 

Метка месяца =  

VAR _StartingPoint = 

   TODAY () 

VAR _Today = 'Список дат'[Дата] = _StartingPoint 

VAR _CurrentYear = 

   YEAR ( 'Список дат'[Дата] ) = YEAR ( _StartingPoint ) 

VAR _CurrentMonth = 

   MONTH ( 'Список дат'[Дата] ) = MONTH ( _StartingPoint ) 

       && _CurrentYear = TRUE () 

VAR _LastMonth = 

   MONTH ( 'Список дат'[Дата] ) 

       = MONTH ( _StartingPoint ) - 1 

       && _CurrentYear = TRUE () 

VAR _FutureMonth = 

   MONTH ( 'Список дат'[Дата] ) 

       = MONTH ( _StartingPoint ) + 1 

       && _CurrentYear = TRUE () 

RETURN 

   SWITCH ( 

       TRUE (), 

       _CurrentMonth, "Текущий месяц", 

       _LastMonth, "Прошлый месяц", 

       _FutureMonth, "Следующий месяц", 

       "Прочее" 

   ) 

 

  • Формула столбца “Метка недели”: 

Метка недели =  

VAR _StartingPoint = 

   TODAY () 

VAR _CurrentYear = 

   YEAR ( 'Список дат'[Дата] ) = YEAR ( _StartingPoint ) 

VAR _CurrentWeek = 

   WEEKNUM ( 'Список дат'[Дата], 2 ) = WEEKNUM ( _StartingPoint, 2 ) 

       && _CurrentYear = TRUE () 

VAR _LastWeek = 

   WEEKNUM ( 'Список дат'[Дата], 2 ) 

       = WEEKNUM ( _StartingPoint, 2 ) - 1 

       && _CurrentYear = TRUE () 

VAR _FutureWeek = 

   WEEKNUM ( 'Список дат'[Дата], 2 ) 

       = WEEKNUM ( _StartingPoint, 2 ) + 1 

       && _CurrentYear = TRUE () 

RETURN 

   SWITCH ( 

       TRUE (), 

       _CurrentWeek, "Текущая неделя", 

       _LastWeek, "Прошлая неделя", 

       _FutureWeek, "Следующая неделя", 

       "Прочее" 

   ) 

 

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

 

  • Формула столбца “Метка дня”: 

Метка дня =  

VAR _StartingPoint = 

   TODAY () 

RETURN 

   SWITCH ( 

       'Список дат'[Дата] - _StartingPoint, 

       0, "Текущий день", 

       -1, "Прошлый день", 

       1, "Следующий день", 

       "Прочее" 

   ) 

 

Как вы, возможно, заметили, формулы, приведенные ранее, были построены по одному шаблону, но решений может быть несколько, поэтому выше была продемонстрирована конструкция SWITCH, а не SWITCH ( TRUE ()…). 

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



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


Наши курсы по Power BI:
Курс Аналитик BI
Курс DAX Mastering
Курс Финансовый анализ в Power BI

Наши каналы:
Facebook
Instagram
Telegram

VK

Полезные статьи