- BI — это просто
- Простой авторский взгляд на сквозную BI аналитику (разбираем на практике Power BI, Excel, Power Pivot, DAX. и многое другое)
- Как в Power BI и Power Pivot вывести даты предыдущего периода? DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY
- DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY в Power BI и Power Pivot
- Пример формул на основе функций PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY
- DAX Previous Month to date total is giving entire previous month’s entire total
- 1 Answer 1
- Syntax
- Return values
- Notes
- Remarks
- PREVIOUSYEAR
- Синтаксис
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- PREVIOUSYEAR
- Syntax
- Parameters
- Return value
- Remarks
- Example
BI — это просто
Простой авторский взгляд на сквозную BI аналитику (разбираем на практике Power BI, Excel, Power Pivot, DAX. и многое другое)
Как в Power BI и Power Pivot вывести даты предыдущего периода? DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY
Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
А также, подписывайтесь на наши социальные сети. Потому что именно в них, Вам будут доступны оперативно и каждый день наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel…): Вконтакте, Инстаграм, Фейсбук, YouTube.
DAX функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY в Power BI и Power Pivot
Все функции группы PREVIOUS возвращают таблицу со столбцом из дат предыдущего периода на основе даты текущего контекста. Где, предыдущий период в:
- PREVIOUSYEAR () — равен предыдущему году
- PREVIOUSQUARTER () — равен предыдущему кварталу
- PREVIOUSMONTH () — равен предыдущему месяцу
- PREVIOUSDAY () — равен предыдущему дню
- [Дата] — столбец из дат или выражений, возвращающих даты
- «Конец Года» — текстовая дата, записанная в виде «02/01» («день/месяц»). Определяет дату окончания года (по умолчанию 31 декабря). Необязательный параметр.
! — Для бесперебойной работы группы функций PREVIOUS необходимо в качестве их параметров [Дата] использовать столбец из календаря непрерывных дат в Power BI, то есть, создавать отдельную связанную таблицу «Календарь» с непрерывным перечислением всех дат.
Пример формул на основе функций PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY
Для понимания сути работы группы функций PREVIOUS, рассмотрим на практике несколько примеров в Power BI.
Сперва, разберем простой пример на основе DAX функции PREVIOUSDAY.
В Power BI Desktop имеется исходная таблица дат «Календарь»:
Создадим в этой таблице вычисляемый столбец по следующей формуле с участием PREVIOUSDAY:
Результатом выполнения этой формулы будет созданный в исходной таблице второй столбец:
где, для текущего дня (например, 2 января) из столбца [Дата], соответствует предыдущий день (1 января).
Для чего это все может быть полезно?
Сами по себе функции PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY использовать в одиночку бесполезно. Они становятся нужными в сочетании с другими функциями языка DAX.
Например, тогда, когда для конкретного периода в текущем контексте нам нужно рассчитать сумму продаж предыдущего периода. И здесь, как раз, функции PREVIOUS нам очень хорошо подходят.
Давайте разберем на практике соответствующие примеры.
В Power BI Desktop имеется исходная таблица продаж за 2 года (с 01.01.2017 по 31.12.2018):
Задача — рассчитать суммы продаж за предыдущие периоды относительно периодов текущего контекста.
Для правильной работы PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY в качестве столбца [Дата] мы не можем вставлять столбец дат, который находится в исходной таблице продаж. Для них нужна совершенно отдельная таблица неразрывных дат «Календарь» (как создавать календари неразрывных дат Вы можете прочитать в этой статье).
Поэтому, создадим в модели данных новую вычисляемую таблицу «Календарь» и свяжем ее с основной исходной таблицей «Продажи» по столбцу [Дата Продаж]:
Далее, напишем формулы расчета суммы продаж за предыдущие периоды на основе группы функций PREVIOUS:
- сумма продаж рассчитывается при помощи DAX функции SUM
- предыдущие периоды рассчитываются при помощи рассматриваемой группы PREVIOUS
- условие «вычисление суммы только за предыдущий период» создается функцией CALCULATE, внутрь которой вложены все остальные функции, участвующие в работе
Результатом выполнения всех формул, будут следующие сводные таблицы в Power BI Desktop:
Из примера мы видим, что все функции из группы PREVIOUS отлично справились со своей задачей и везде возвращены суммы продаж соответствующего предыдущего периода.
На этом, с разбором DAX функций PREVIOUSYEAR, PREVIOUSQUARTER, PREVIOUSMONTH и PREVIOUSDAY, возвращающих в Power BI и Power Pivot предыдущие периоды, в этой статье все.
Единственное, напоминаю, что для правильной работы этих функций, в качестве столбца дат необходимо указывать отдельную таблицу «Календарь» с неразрывными датами.
Переходите к следующей статье, где мы разберем противоположные функции, возвращающие следующие периоды в DAX.
Пожалуйста, оцените статью:
- 5
- 4
- 3
- 2
- 1
(7 голосов, в среднем: 5 из 5 баллов)
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Источник
DAX Previous Month to date total is giving entire previous month’s entire total
I am using DAX in Power BI to calculate Previous Month sales total to date to create a KPI visual. i.e. if today is 7th Dec then I want to get sales total from 1st Nov to 7th Nov and compare with current month to date.
This works fine. However Previous Month YTD gives me total for entire month of November. I have tried the following so far
Both return the same answer which is total for the entire previous month . If I simply hardcode the start and end date in datesbetween version above, then I do get the desired result. But that is not the solution.
I have linked the fact table (Sales_VOUCHERS) to a DatesTable and as of now there are no other visuals on the report page. Kindly assist what I am missing out on and how I can get Previous Month year to date total
1 Answer 1
If you’re aggregating at the month level (i.e. you’re looking at December 2016 vs. November 2016), then the measure you have above will show you the entire month of December compared to the entire month of November (and since December is a partial month and November isn’t, it causes the mismatch you see).
If you filter to the current date (e.g. 7th Dec), then both your MTD and Prior Month MTD measures will only show you through the 7th of their corresponding months.
Assuming you don’t want to filter to the day level (not unreasonable), you could enhance your formula to filter out future dates. For example:
This says, if the date is after today, don’t pass it into the TOTALMTD calculation (so it will only calculate the first 7 days of the month, for example, if today is Dec 8th — even if you’re looking at full months on your report).
Side note: you can also write your previous month measure to re-use your MTD measure rather than redefining it. In this way, if you ever change the MTD calculation, the previous MTD calculation automatically updates.
Источник
Returns a previous month.
Syntax
| Parameter | Attributes | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dates |
| Термин | Определение |
|---|---|
| даты | Столбец, содержащий даты. |
| year_end_date | (необязательно) Литеральная строка с датой, которая определяет дату окончания года. Значение по умолчанию — 31 декабря. |
Возвращаемое значение
Таблица, содержащая один столбец значений даты.
Remarks
Эта функция возвращает все даты с предыдущего указанного года до последней даты во входном параметре. Например, если последняя дата в аргументе dates ссылается на 2009 год, эта функция возвращает все даты для 2008 года, вплоть до указанного year_end_date.
Аргумент dates может принимать любое из следующих значений:
- ссылка на столбец даты и времени;
- табличное выражение, возвращающее один столбец значений даты и времени;
- логическое выражение, определяющее таблицу значений даты и времени из одного столбца.
Ограничения, применяемые к логическим выражениям, описаны в разделе Функция CALCULATE.
Параметр year_end_date — это строковый литерал даты в языковом стандарте клиента, в котором была создана книга. Компонент года в дате игнорируется.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример
В следующем примере формулы создается мера, которая вычисляет продажи через Интернет за предыдущий год.
Источник
PREVIOUSYEAR
Returns a table that contains a column of all dates from the previous year, given the last date in the dates column, in the current context.
Syntax
Parameters
| Term | Definition |
|---|---|
| dates | A column containing dates. |
| year_end_date | (optional) A literal string with a date that defines the year-end date. The default is December 31. |
Return value
A table containing a single column of date values.
Remarks
This function returns all dates from the previous year given the latest date in the input parameter. For example, if the latest date in the dates argument refers to the year 2009, then this function returns all dates for the year of 2008, up to the specified year_end_date.
The dates argument can be any of the following:
- A reference to a date/time column.
- A table expression that returns a single column of date/time values.
- A Boolean expression that defines a single-column table of date/time values.
Constraints on Boolean expressions are described in the topic, CALCULATE.
The year_end_date parameter is a string literal of a date, in the same locale as the locale of the client where the workbook was created. The year portion of the date is ignored.
This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.
Example
The following sample formula creates a measure that calculates the previous year sales for Internet sales.
Источник