Выбор временного периода

В Power BI есть стандартные средства переключения временного периода — достаточно в оси добавить несколько вариантов. Но для конечных пользователей переключение между периодами в таком виде бывает не очевидно. Поэтому в данной статье будет рассмотрено как сделать переключение между периодами с помощью кнопок с названиями периодов.

Мы будем использовать календарь Максима Уварова, но в целом неважно какой календарь использовать.

Для начала нам нужно создать новую вычисляемую таблицу назовем ее _NewCalendar.

Таблица будет состоять из 5 полей:

  • Date — нужно для связи с основным календарем
  • Period — главное поле, здесь мы указываем периоды из основного календаря, которые и будут использоваться для оси.
  • PeriodIndex — из-за того что в поле Period будут содержаться поля с разным типом, то это поле нужно для правильной сортировки, соответственно и заполнять его нужно согласно тому, какое поле вы бы использовали для правильной сортировки Period.
  • Level — названия периодов, будут использоваться для фильтров-кнопок.
  • LevelIndex для правильной сортировки Level, иначе сортировка будет по алфавиту.

После того как таблица была создана, необходимо настроить сортировку Period по PeriodIndex и сортировку Level по LevelIndex. Выбираем справа столбик Period, на вкладке Modeling -> Sort by Column.

Также необходимо связать новый календарь с основным. Связь — двунаправленная.

Создаем фильтр по Level. Лучше сразу разрешить только одиночный выбор в настройках.

Создаем визуализацию, где осью указываем Period из нашего нового календаря. Сортировку визуализации выбираем по Period.
Добавляем что собственно будет выступать данными — в нашем случае клики по линиями и расход по столбцам.

Для удобства можно добавить еще фильтр по датам основного календаря.

Ну собственно и всё.

P/S

Горизонтальный скролл, который появляется при выборе «по дням» и которого нет, если указать Date (без иерархии) как ось, возникает из-за того, что поле Period имеет фактически текстовый тип, в отличии от поле Date, который является датой. Как сделать так, чтобы тип менялся в зависимости от выбранного диапазона, я еще не придумал, но есть подозрение, что это возможно реализовать.

Ссылка на гитхаб

https://github.com/q-stat-ru/art02_pbi_time_range_selection