Россия Нет

Как в Power BI и Power Pivot вывести даты предыдущего периода? DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы разберем группу DAX функций PREVIOUS, которая возвращает даты предыдущего периода в Power BI и PowerPivot. И это функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY.

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

 

DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY в Power BI и Power Pivot

Все функции группы PREVIOUS возвращают таблицу со столбцом из дат предыдущего периода на основе даты текущего контекста. Где, предыдущий период в:

  • PREVIOUSYEAR () — равен предыдущему году
  • PREVIOUSQUARTER () — равен предыдущему кварталу
  • PREVIOUSMONTH () — равен предыдущему месяцу
  • PREVIOUSDAY () — равен предыдущему дню

Синтаксис:

PREVIOUSYEAR ([Дата]; "Конец Года")
PREVIOUSQUARTER ([Дата])
PREVIOUSMONTH ([Дата])
PREVIOUSDAY ([Дата])

Где:

  • [Дата] — столбец из дат или выражений, возвращающих даты
  • «Конец Года» — текстовая дата, записанная в виде «02/01» («день/месяц»). Определяет дату окончания года (по умолчанию 31 декабря). Необязательный параметр.

! — Для бесперебойной работы группы функций PREVIOUS необходимо в качестве их параметров [Дата] использовать столбец из календаря непрерывных дат в Power BI, то есть, создавать отдельную связанную таблицу «Календарь» с непрерывным перечислением всех дат.

 

Пример формул на основе функций PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY

Для понимания сути работы группы функций PREVIOUS, рассмотрим на практике несколько примеров в Power BI.

Сперва, разберем простой пример на основе DAX функции PREVIOUSDAY.

В Power BI Desktop имеется исходная таблица дат «Календарь»:

 

Создадим в этой таблице вычисляемый столбец по следующей формуле с участием PREVIOUSDAY:

Предыдущий День = PREVIOUSDAY ('Календарь'[Дата])

Результатом выполнения этой формулы будет созданный в исходной таблице второй столбец:

где, для текущего дня (например, 2 января) из столбца [Дата], соответствует предыдущий день (1 января).

 

Для чего это все может быть полезно?

Сами по себе функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY использовать в одиночку бесполезно. Они становятся нужными в сочетании с другими функциями языка DAX.

Например, тогда, когда для конкретного периода в текущем контексте нам нужно рассчитать сумму продаж предыдущего периода. И здесь, как раз, функции PREVIOUS нам очень хорошо подходят.

Давайте разберем на практике соответствующие примеры.

В Power BI Desktop имеется исходная таблица продаж за 2 года (с 01.01.2017 по 31.12.2018):

 

Задача — рассчитать суммы продаж за предыдущие периоды относительно периодов текущего контекста.

Для правильной работы PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY в качестве столбца [Дата] мы не можем вставлять столбец дат, который находится в исходной таблице продаж. Для них нужна совершенно отдельная таблица неразрывных дат «Календарь» (как создавать календари неразрывных дат Вы можете прочитать в этой статье).

Поэтому, создадим в модели данных новую вычисляемую таблицу «Календарь» и свяжем ее с основной исходной таблицей «Продажи» по столбцу [Дата Продаж]:

 

Далее, напишем формулы расчета суммы продаж за предыдущие периоды на основе группы функций PREVIOUS:

Предыдущий Год = 
CALCULATE ( 
    SUM ('Продажи'[СуммаПродаж]);
    PREVIOUSYEAR ('Календарь'[Date])
)

Предыдущий Квартал = 
CALCULATE ( 
    SUM ('Продажи'[СуммаПродаж]);
    PREVIOUSQUARTER ('Календарь'[Date])
)

Предыдущий Месяц = 
CALCULATE ( 
    SUM ('Продажи'[СуммаПродаж]);
    PREVIOUSMONTH ('Календарь'[Date])
)

Предыдущий День = 
CALCULATE ( 
    SUM ('Продажи'[СуммаПродаж]);
    PREVIOUSDAY ('Календарь'[Date])
)

Где:

  • сумма продаж рассчитывается при помощи DAX функции SUM
  • предыдущие периоды рассчитываются при помощи рассматриваемой группы PREVIOUS
  • условие «вычисление суммы только за предыдущий период» создается функцией CALCULATE, внутрь которой вложены все остальные функции, участвующие в работе

Результатом выполнения всех формул, будут следующие сводные таблицы в Power BI Desktop:

 

Из примера мы видим, что все функции из группы PREVIOUS отлично справились со своей задачей и везде возвращены суммы продаж соответствующего предыдущего периода.

На этом, с разбором DAX функций PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY, возвращающих в Power BI и Power Pivot предыдущие периоды, в этой статье все.

Единственное, напоминаю, что для правильной работы этих функций, в качестве столбца дат необходимо указывать отдельную таблицу «Календарь» с неразрывными датами.

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

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(14 голосов, в среднем: 4.6 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
 
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 
Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

Добавить комментарий

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных