Учебники

Excel DAX — Time Intelligence

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

DAX имеет 35 функций анализа времени, специально предназначенных для агрегирования и сравнения данных во времени. Однако эти функции DAX имеют некоторые ограничения в отношении данных, которые необходимо понимать, и работайте с осторожностью, чтобы избежать ошибок.

Почему Time Intelligence делает DAX мощным?

Функции контроля времени работают с данными, которые постоянно меняются, в зависимости от контекста, выбранного в визуализациях сводных таблиц и Power View. Как вам известно, большая часть анализа данных включает в себя суммирование данных за периоды времени, сравнение значений данных за периоды времени, понимание тенденций и принятие решений на основе будущих прогнозов.

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

Здесь вы можете наблюдать силу DAX. Вы можете использовать функции анализа времени DAX для определения вычисляемых полей, которые помогут вам анализировать данные с течением времени, не изменяя выбор даты в сводных таблицах. Это облегчает вашу работу. Более того, вы можете создавать сводные таблицы, которые были бы невозможны другим способом.

Требования к функциям DAX Time Intelligence

Функции разведки времени DAX предъявляют определенные требования. Если эти требования не выполняются, вы можете получить ошибки или они могут работать неправильно. Следовательно, вы можете ссылаться на эти требования как на правила или ограничения. Ниже приведены определенные требования / правила / ограничения функций времени DAX —

  • Вам необходимо иметь таблицу дат в вашей модели данных.

  • Таблица дат должна включать столбец, который DAX считает столбцом «Дата». Вы можете назвать столбец так, как хотите, но он должен соответствовать следующим условиям: o Столбец даты должен содержать непрерывный набор дат, который охватывает каждый день в течение периода времени, когда вы анализируете данные.

    • Каждая дата должна существовать один раз и только один раз в столбце даты.

    • Вы не можете пропустить ни одной даты (например, вы не можете пропустить даты выходных).

  • Функции анализа времени DAX работают только по стандартному календарю и предполагают, что начало года — 1 января, а конец года — 31 декабря, а месяцы года и дни каждого месяца — календарного года.

Вам необходимо иметь таблицу дат в вашей модели данных.

Таблица дат должна включать столбец, который DAX считает столбцом «Дата». Вы можете назвать столбец так, как хотите, но он должен соответствовать следующим условиям: o Столбец даты должен содержать непрерывный набор дат, который охватывает каждый день в течение периода времени, когда вы анализируете данные.

Каждая дата должна существовать один раз и только один раз в столбце даты.

Вы не можете пропустить ни одной даты (например, вы не можете пропустить даты выходных).

Функции анализа времени DAX работают только по стандартному календарю и предполагают, что начало года — 1 января, а конец года — 31 декабря, а месяцы года и дни каждого месяца — календарного года.

Однако вы можете настроить стандартный календарь на разные финансовые годы. Хорошей практикой является проверка вышеуказанных требований перед использованием любой временной функции.

Для получения дополнительной информации о таблицах дат и их использовании в формулах DAX см. Учебник = Моделирование данных с DAX в этой библиотеке учебников.

Функции DAX Time Intelligence — Категории

Функции DAX Time Intelligence можно разделить на следующие категории:

  • Функции DAX, которые возвращают одну дату.
  • DAX-функции, которые возвращают таблицу дат.
  • Функции DAX, которые оценивают выражения за период времени.

Функции DAX, которые возвращают одну дату

Функции DAX в этой категории возвращают одну дату.

В этой категории 10 функций DAX.

Sr.No. Функция DAX и возвращаемое значение
1

FIRSTDATE (Date_Column)

Возвращает первую дату в столбце Date_Column в текущем контексте.

2

LASTDATE (Date_Column)

Возвращает последнюю дату в столбце Date_Column в текущем контексте.

3

FIRSTNONBLANK (Date_Column, Expression)

Возвращает первую дату, когда выражение имеет непустое значение.

4

LASTNONBLANK (Date_Column, Expression)

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

5

STARTOFMONTH (Date_Column)

Возвращает первую дату месяца в текущем контексте.

6

ENDOFMONTH (Date_Column)

Возвращает последнюю дату месяца в текущем контексте.

7

STARTOFQUARTER (Date_Column)

Возвращает первую дату квартала в текущем контексте.

8

ENDOFQUARTER (Date_Column)

Возвращает последнюю дату квартала в текущем контексте.

9

STARTOFYEAR (Date_Column, [YE_Date])

Возвращает первую дату года в текущем контексте.

10

ENDOFYEAR (Date_Column, [YE_Date])

Возвращает последнюю дату года в текущем контексте.

FIRSTDATE (Date_Column)

Возвращает первую дату в столбце Date_Column в текущем контексте.

LASTDATE (Date_Column)

Возвращает последнюю дату в столбце Date_Column в текущем контексте.

FIRSTNONBLANK (Date_Column, Expression)

Возвращает первую дату, когда выражение имеет непустое значение.

LASTNONBLANK (Date_Column, Expression)

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

STARTOFMONTH (Date_Column)

Возвращает первую дату месяца в текущем контексте.

ENDOFMONTH (Date_Column)

Возвращает последнюю дату месяца в текущем контексте.

STARTOFQUARTER (Date_Column)

Возвращает первую дату квартала в текущем контексте.

ENDOFQUARTER (Date_Column)

Возвращает последнюю дату квартала в текущем контексте.

STARTOFYEAR (Date_Column, [YE_Date])

Возвращает первую дату года в текущем контексте.

ENDOFYEAR (Date_Column, [YE_Date])

Возвращает последнюю дату года в текущем контексте.

Функции DAX, которые возвращают таблицу дат

Функции DAX в этой категории возвращают таблицу дат. Эти функции будут в основном использоваться в качестве аргумента SetFilter для функции DAX — CALCULATE.

В этой категории 16 функций DAX. Восемь (8) из этих функций DAX — это «предыдущая» и «следующая» функции.

  • Функции «предыдущая» и «следующая» начинаются со столбца даты в текущем контексте и вычисляют предыдущий или следующий день, месяц, квартал или год.

  • «Предыдущие» функции работают в обратном направлении от первой даты в текущем контексте, а «следующие» функции перемещаются вперед от последней даты в текущем контексте.

  • Функции «предыдущая» и «следующая» возвращают итоговые даты в виде таблицы из одного столбца.

Функции «предыдущая» и «следующая» начинаются со столбца даты в текущем контексте и вычисляют предыдущий или следующий день, месяц, квартал или год.

«Предыдущие» функции работают в обратном направлении от первой даты в текущем контексте, а «следующие» функции перемещаются вперед от последней даты в текущем контексте.

Функции «предыдущая» и «следующая» возвращают итоговые даты в виде таблицы из одного столбца.

Sr.No. Функция DAX и возвращаемое значение
1

PREVIOUSDAY (Date_Column)

Возвращает таблицу, которая содержит столбец всех дат, представляющих день, предшествующий первой дате в столбце Date_Column в текущем контексте.

2

СЛЕДУЮЩИЙ (Date_Column)

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

3

PREVIOUSMONTH (Date_Column)

Возвращает таблицу, которая содержит столбец всех дат за предыдущий месяц, основываясь на первой дате в столбце Date_Column в текущем контексте.

4

NEXTMONTH (Date_Column)

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

5

PREVIOUSQUARTER (Date_Column)

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

6

NEXTQUARTER (Date_Column)

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

7

PREVIOUSYEAR (Date_Column, [YE_Date])

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

8

NEXTYEAR (Date_Column, [YE_Date])

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

PREVIOUSDAY (Date_Column)

Возвращает таблицу, которая содержит столбец всех дат, представляющих день, предшествующий первой дате в столбце Date_Column в текущем контексте.

СЛЕДУЮЩИЙ (Date_Column)

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

PREVIOUSMONTH (Date_Column)

Возвращает таблицу, которая содержит столбец всех дат за предыдущий месяц, основываясь на первой дате в столбце Date_Column в текущем контексте.

NEXTMONTH (Date_Column)

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

PREVIOUSQUARTER (Date_Column)

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

NEXTQUARTER (Date_Column)

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

PREVIOUSYEAR (Date_Column, [YE_Date])

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

NEXTYEAR (Date_Column, [YE_Date])

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

Четыре (4) функции DAX вычисляют набор дат в периоде. Эти функции выполняют вычисления, используя последнюю дату в текущем контексте.

Sr.No. Функция DAX и возвращаемое значение
1

DATESMTD (Date_Column)

Возвращает таблицу, которая содержит столбец дат за месяц до даты в текущем контексте.

2

DATESQTD (Date_Column)

Возвращает таблицу, которая содержит столбец дат за квартал до даты в текущем контексте.

3

DATESYTD (Date_Column, [YE_Date])

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

4

SAMEPERIODLASTYEAR (Date_Column)

Возвращает таблицу, которая содержит столбец дат, смещенных на год назад от дат в указанном столбце Date_Column в текущем контексте.

Примечание. SAMEPERIODLASTYEAR требует, чтобы текущий контекст содержал непрерывный набор дат.

Если текущий контекст не является непрерывным набором дат, то SAMEPERIODLASTYEAR вернет ошибку.

DATESMTD (Date_Column)

Возвращает таблицу, которая содержит столбец дат за месяц до даты в текущем контексте.

DATESQTD (Date_Column)

Возвращает таблицу, которая содержит столбец дат за квартал до даты в текущем контексте.

DATESYTD (Date_Column, [YE_Date])

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

SAMEPERIODLASTYEAR (Date_Column)

Возвращает таблицу, которая содержит столбец дат, смещенных на год назад от дат в указанном столбце Date_Column в текущем контексте.

Примечание. SAMEPERIODLASTYEAR требует, чтобы текущий контекст содержал непрерывный набор дат.

Если текущий контекст не является непрерывным набором дат, то SAMEPERIODLASTYEAR вернет ошибку.

  • Четыре (4) функции DAX используются для перехода от набора дат в текущем контексте к новому набору дат.

    Эти функции DAX более мощные, чем предыдущие.

    • Функции DAX — DATEADD, DATESINPERIOD и PARALLELPERIOD смещают некоторое количество временных интервалов из текущего контекста. Интервал может быть днем, месяцем, кварталом или годом, представленным ключевыми словами — ДЕНЬ, МЕСЯЦ, КВАРТАЛ и ГОД соответственно.

      Например:

  • Сдвиг назад на 2 дня.

  • Продвинуться на 5 месяцев.

  • Двигайтесь вперед на один месяц с сегодняшнего дня.

  • Вернуться в тот же квартал в прошлом году.

      Если аргумент функции — число интервалов (целочисленное значение) положителен, сдвиг вперед, а если он отрицателен, сдвиг назад.

    • Функция DAX — DATESBETWEEN вычисляет набор дат между указанной датой начала и датой окончания.

Четыре (4) функции DAX используются для перехода от набора дат в текущем контексте к новому набору дат.

Эти функции DAX более мощные, чем предыдущие.

Функции DAX — DATEADD, DATESINPERIOD и PARALLELPERIOD смещают некоторое количество временных интервалов из текущего контекста. Интервал может быть днем, месяцем, кварталом или годом, представленным ключевыми словами — ДЕНЬ, МЕСЯЦ, КВАРТАЛ и ГОД соответственно.

Например:

Сдвиг назад на 2 дня.

Продвинуться на 5 месяцев.

Двигайтесь вперед на один месяц с сегодняшнего дня.

Вернуться в тот же квартал в прошлом году.

Если аргумент функции — число интервалов (целочисленное значение) положителен, сдвиг вперед, а если он отрицателен, сдвиг назад.

Функция DAX — DATESBETWEEN вычисляет набор дат между указанной датой начала и датой окончания.

Sr.No. Функция DAX и возвращаемое значение
1

DATEADD (Date_Column, Number_of_Intervals, Interval)

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

2

DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)

Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается в течение указанного number_of_intervals.

3

PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval)

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

4

DATESBETWEEN (Date_Column, Start_Date, End_Date)

Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается до end_date.

DATEADD (Date_Column, Number_of_Intervals, Interval)

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

DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)

Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается в течение указанного number_of_intervals.

PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval)

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

DATESBETWEEN (Date_Column, Start_Date, End_Date)

Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается до end_date.

Функции DAX, которые оценивают выражения за период времени

Функции DAX в этой категории оценивают выражение в течение определенного периода времени.

В этой категории девять (9) функций DAX —

Три (3) функции DAX в этой категории могут использоваться для оценки любого данного выражения в течение определенного периода времени.

TOTALMTD (выражение, дата_колонка, [SetFilter])

Оценивает значение выражения для дат в месяце до даты в текущем контексте.

TOTALQTD (выражение, дата_колонка, [SetFilter])

Оценивает значение выражения для дат в квартале до даты в текущем контексте.

TOTALYTD (Выражение, Date_Column, [SetFilter], [YE_Date])

Оценивает значение выражения для дат в году до даты в текущем контексте

Шесть (6) функций DAX в этой категории могут использоваться для расчета начального и конечного сальдо.

Начальное сальдо за любой период совпадает с начальным сальдо за предыдущий период.

Конечное сальдо включает все данные до конца периода, в то время как начальное сальдо не включает никаких данных за текущий период.

Эти функции DAX всегда возвращают значение выражения, оцененное для определенного момента времени.

Момент времени, о котором мы заботимся, всегда является последним возможным значением даты в календарном периоде.

Начальное сальдо основывается на последней дате предыдущего периода, тогда как конечное сальдо основывается на последней дате в текущем периоде.

Текущий период всегда определяется последней датой в контексте текущей даты.

OPENINGBALANCEMONTH (выражение, дата_колонка, [SetFilter])

Оценивает выражение по первой дате месяца в текущем контексте.

CLOSINGBALANCEMONTH (выражение, дата_колонка, [SetFilter])

Оценивает выражение в последнюю дату месяца в текущем контексте.

OPENINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter])

Оценивает выражение на первую дату квартала в текущем контексте.

CLOSINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter])

Оценивает выражение на последнюю дату квартала в текущем контексте.

OPENINGBALANCEYEAR (Выражение, Date_Column, [SetFilter], [YE_Date])

Оценивает выражение в первую дату года в текущем контексте.

CLOSINGBALANCEYEAR (выражение, Date_Column, [SetFilter], [YE_Date])

Оценивает выражение в последнюю дату года в текущем контексте.