← К списку уроков
Power BI·Средний·15 мин

DAX: Time Intelligence

SAMEPERIODLASTYEAR, DATESYTD, PREVIOUSMONTH — временная аналитика.

DAX: Time Intelligence

Time Intelligence — встроенные функции DAX для расчёта YTD, YoY, MoM, скользящих средних и сравнений периодов. Незаменимы в продуктовом репортинге.

Обязательное условие: Календарь

Без отдельной непрерывной таблицы Calendar, помеченной как Date Table, эти функции не работают.

Calendar = CALENDARAUTO()

Затем: Modeling → Mark as Date Table → выбрать колонку Date.

YTD (Year-To-Date)

Revenue YTD =
TOTALYTD(
    [Total Revenue],
    Calendar[Date]
)

Кумулятивная сумма с 1 января текущего года до выбранной даты.

Сравнение с прошлым годом

Revenue Last Year =
CALCULATE(
    [Total Revenue],
    SAMEPERIODLASTYEAR( Calendar[Date] )
)

YoY Growth % =
VAR Current = [Total Revenue]
VAR Previous = [Revenue Last Year]
RETURN DIVIDE( Current - Previous, Previous )

MoM (Month-over-Month)

Revenue MoM % =
VAR ThisMonth = [Total Revenue]
VAR PrevMonth =
    CALCULATE(
        [Total Revenue],
        DATEADD( Calendar[Date], -1, MONTH )
    )
RETURN DIVIDE( ThisMonth - PrevMonth, PrevMonth )

Скользящая средняя (3 месяца)

Revenue MA 3M =
CALCULATE(
    AVERAGEX(
        DATESINPERIOD( Calendar[Date], MAX(Calendar[Date]), -3, MONTH ),
        [Total Revenue]
    )
)

Сводная таблица популярных функций

ФункцияЧто делает
TOTALYTDсумма с начала года
TOTALQTD, TOTALMTDс начала квартала/месяца
SAMEPERIODLASTYEARтот же период год назад
PARALLELPERIODсдвинутый период
DATEADDсдвиг на N единиц
DATESINPERIODдиапазон относительно даты

Что важно запомнить

  • Календарь должен быть непрерывным — нельзя пропуски дат
  • При сезонности (декабрь vs февраль) — Time Intelligence спасает: всегда сравнивает «как было год назад»
  • На частичных периодах (середина текущего месяца) MoM — это «незавершённый текущий» против «полного предыдущего». Сделай меру [Revenue MTD vs Same Day Last Month] чтоб сравнивать честно
  • На собеседовании любят спросить: «как рассчитать YoY и почему календарь обязателен» — выучи