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 и почему календарь обязателен» — выучи