Previous month dax не работает

BI — это просто

Простой авторский взгляд на сквозную BI аналитику (разбираем на практике Power BI, Excel, Power Pivot, DAX. и многое другое)

Как в 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».

А также, подписывайтесь на наши социальные сети. Потому что именно в них, Вам будут доступны оперативно и каждый день наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи по темам сквозной 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.

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

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(7 голосов, в среднем: 5 из 5 баллов)

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

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

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

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

Источник

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

The name of a column containing dates or a one column table containing dates.

Return values

A table containing a single column of date values.

Notes

In order to use any time intelligence calculation, you need a well-formed date table. The Date table must satisfy the following requirements:

  • All dates need to be present for the years required. The Date table must always start on January 1 and end on December 31, including all the days in this range. If the report only references fiscal years, then the date table must include all the dates from the first to the last day of a fiscal year. For example, if the fiscal year 2008 starts on July 1, 2007, then the Date table must include all the days from July 1, 2007 to June 30, 2008.
  • There needs to be a column with a DateTime or Date data type containing unique values. This column is usually called Date. Even though the Date column is often used to define relationships with other tables, this is not required. Still, the Date column must contain unique values and should be referenced by the Mark as Date Table feature. In case the column also contains a time part, no time should be used – for example, the time should always be 12:00 am.
  • The Date table must be marked as a date table in the model, in case the relationship between the Date table and any other table is not based on the Date.

Remarks

The result includes all the days in the previous month considering the first day in the dates argument.

The dates argument can be any of the following:

  • A reference to a date/time column. Only in this case a context transition applies because the column reference is replaced by
    • CALCULATETABLE ( DISTINCT ( ) )
  • 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.

The result table includes only dates that exist in the dates column.

Источник

PREVIOUSYEAR

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

Синтаксис

Параметры

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.

Источник

Оцените статью