Выражения анализа данных (DAX) имеют 35 функций, специально предназначенных для агрегирования и сравнения данных с течением времени. В отличие от функций даты и времени DAX, функции аналитики времени на самом деле не имеют ничего подобного в Excel. Это связано с тем, что функции аналитики времени работают с данными, которые постоянно меняются в зависимости от контекста, выбранного в сводных таблицах и визуализациях Power View.
Чтобы работать с функциями аналитики времени, в модель данных должна быть включена таблица дат. Таблица дат должна содержать столбец с одной строкой для каждого дня каждого года, включенного в данные. Этот столбец считается столбцом Date (хотя его можно назвать как угодно). Многим функциям аналитики времени требуется столбец даты для вычисления в соответствии с датами, выбранными в качестве полей в отчете. Например, если у вас есть мера, которая вычисляет закрывающий квартальный баланс с помощью функции CLOSINGBALANCEQTR, чтобы Power Pivot знал, когда действительно наступает конец квартала, он должен ссылаться на столбец дат в таблице date, чтобы узнать, когда начинается и заканчивается квартал. Дополнительные сведения о таблицах дат см. в статье Общие сведения о таблицах дат и их создании в Power Pivot в Excel.
Функции
Функции, возвращающие одну дату
Функции в этой категории возвращают одну дату. Затем результат можно использовать в качестве аргументов для других функций.
Первые две функции в этой категории возвращают первую или последнюю дату в Date_Column в текущем контексте. Это может быть полезно, если требуется найти первую или последнюю дату, в которую у вас была транзакция определенного типа. Эти функции принимают только один аргумент — имя столбца дат в таблице дат.
Следующие две функции в этой категории находят первую или последнюю дату (или любое другое значение столбца), где выражение имеет непустое значение. Это чаще всего используется в таких ситуациях, как инвентаризация, когда вы хотите получить последнюю сумму запасов и не знаете, когда была сделана последняя инвентаризация.
-
FIRSTNONBLANK (Date_Column, выражение)
-
LASTNONBLANK (Date_Column, выражение)
Еще шесть функций, возвращающих одну дату, — это функции, возвращающие первую или последнюю дату месяца, квартала или года в текущем контексте вычисления.
-
STARTOFMONTH (Date_Column)
-
STARTOFQUARTER (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFMONTH (Date_Column)
-
ENDOFQUARTER (Date_Column)
-
ENDOFYEAR (Date_Column [,YE_Date])
Функции, возвращающие таблицу дат
Существует шестнадцать функций аналитики времени, которые возвращают таблицу дат. Чаще всего эти функции используются в качестве аргумента SetFilter для функции CALCULATE . Как и все функции аналитики времени в DAX, каждая функция принимает столбец даты в качестве одного из своих аргументов.
Первые восемь функций в этой категории начинаются со столбца даты в текущем контексте. Например, если в сводной таблице используется мера, для меток столбцов или строк может быть месяц или год. Результатом является фильтрация столбца даты, включающая только даты для текущего контекста. Начиная с текущего контекста, эти восемь функций вычисляют предыдущий (или следующий) день, месяц, квартал или год и возвращают эти даты в виде таблицы с одним столбцом. Функции "предыдущие" работают в обратном направлении от первой даты в текущем контексте, а "следующие" функции перемещаются вперед от последней даты в текущем контексте.
-
PREVIOUSDAY (Date_Column)
-
PREVIOUSMONTH (Date_Column)
-
PREVIOUSQUARTER (Date_Column)
-
PREVIOUSYEAR (Date_Column [,YE_Date])
-
СЛЕДУЮЩИЙ ДЕНЬ (Date_Column)
-
NEXTMONTH (Date_Column)
-
NEXTQUARTER (Date_Column)
-
NEXTYEAR (Date_Column [,YE_Date])
Следующие четыре функции в этой категории похожи, но вместо вычисления предыдущего (или следующего) периода они вычисляют набор дат в периоде , который является "месяц к дате" (или квартал к дате, или год к дате, или в том же периоде предыдущего года). Все эти функции выполняют вычисления с использованием последней даты в текущем контексте. Обратите внимание, что samePERIODLASTYEAR требует, чтобы текущий контекст содержал непрерывный набор дат. Если текущий контекст не является непрерывным набором дат, функция SAMEPERIODLASTYEAR вернет ошибку.
-
DATESMTD (Date_Column)
-
DATESQTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
-
SAMEPERIODLASTYEAR (Date_Column)
Последние четыре функции в этой категории немного более сложные, а также немного более мощные. Эти функции используются для перехода от набора дат, которые находятся в текущем контексте, к новому набору дат.
-
DATEADD (Date_Column, Number_of_Intervals, Interval)
-
DATESBETWEEN (Date_Column, Start_Date, End_Date)
-
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)
-
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval)
DATESBETWEEN вычисляет набор дат между указанной датой начала и окончания. Остальные три функции смещают некоторое количество интервалов времени из текущего контекста. Интервал может быть днем, месяцем, кварталом или годом. Эти функции упрощают смещение интервала времени для вычисления на любой из следующих способов:
-
Назад два года
-
Назад один месяц
-
Перейти вперед на три четверти
-
Назад 14 дней
-
Перейти вперед 28 дней
В каждом случае необходимо только указать, какой интервал и сколько из этих интервалов необходимо сдвинуть. Положительный интервал будет двигаться вперед во времени, а отрицательный — назад во времени. Сам интервал задается ключевое слово DAY, MONTH, QUARTER или YEAR. Эти ключевые слова не являются строками, поэтому они не должны быть в кавычках.
Функции, вычисляющие выражения за период времени
Эта категория функций вычисляет выражение за указанный период времени. Вы можете выполнить то же самое с помощью calculate и других функций аналитики времени. Например:
= TOTALMTD (Expression, Date_Column [, SetFilter])
точно так же, как:
= CALCULATE (Expression, DATESMTD (Date_Column)[, SetFilter])
Тем не менее, проще использовать эти функции аналитики времени, когда они хорошо подходят для задачи, которую необходимо решить:
-
TOTALMTD (Expression, Date_Column [, SetFilter])
-
TOTALQTD (Выражение, Date_Column [, SetFilter])
-
TOTALYTD (Выражение, Date_Column [, SetFilter] [,YE_Date]) *
Кроме того, в этой категории находятся группы функций, которые вычисляют балансы открытия и закрытия. Существуют определенные понятия, которые следует понимать с помощью этих конкретных функций. Во-первых, как вам кажется очевидным, начальный остаток за любой период совпадает с закрывающим балансом за предыдущий период. Закрывающий баланс включает все данные за конец периода, в то время как начальный баланс не содержит никаких данных за текущий период.
Эти функции всегда возвращают значение выражения, вычислимого для определенного момента времени. Момент времени, о который мы заботимся, всегда является последним возможным значением даты в календарном периоде. Начальный остаток основан на последней дате предыдущего периода, а закрывающий остаток основан на последней дате текущего периода. Текущий период всегда определяется последней датой в контексте текущей даты.
-
OPENINGBALANCEMONTH (Expression, Date_Column [,SetFilter])
-
OPENINGBALANCEQUARTER Квартал (выражение, Date_Column [,SetFilter])
-
OPENINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (Выражение, Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (Expression, Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
Дополнительные ресурсы
Статьи. Общие сведения о таблицах дат и их создании в Power Pivot в Excel
Справочник по функциям DAXв Office.com
Примеры: моделирование и анализ данных о прибыли и убытках с помощью Microsoft PowerPivot в Excel