Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
- DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY
- Пример формул на основе группы функций PREVIOUS (YEAR, QUARTER, MONTH и DAY)
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы разберем группу 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.
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D