Сравнение год-к-году (YoY)
Сравниваем текущий период с тем же периодом прошлого года — ключевая метрика роста.
Год-к-году (YoY, year-over-year) — сравнение показателя текущего периода с аналогичным периодом прошлого года.
Зачем сравнивать с прошлым годом
Абсолютная выручка мало о чём говорит без базы сравнения. «Июнь дал 180» — это хорошо или плохо? Сравнение с прошлым июнем сразу отвечает: выросли мы или упали. YoY гасит сезонность (декабрь всегда выше июля, нечестно сравнивать соседние месяцы) и показывает реальную динамику. Это первая метрика, которую спрашивает бизнес.
SAMEPERIODLASTYEAR
Сердце расчёта — функция, которая сдвигает текущий период ровно на год назад:
Выручка ПГ = CALCULATE(
[Выручка],
SAMEPERIODLASTYEAR( Date[Дата] )
)«ПГ» — прошлый год. Если текущий контекст — июнь 2026, функция вернёт даты июня 2025, и CALCULATE посчитает выручку за них. Альтернатива — DATEADD(Date[Дата], -1, YEAR), более гибкая (можно сдвигать на месяц/квартал/день).
Прирост в процентах
Дальше считают абсолютный и относительный прирост — тут пригодятся переменные:
Прирост YoY % =
VAR Текущий = [Выручка]
VAR Прошлый = CALCULATE( [Выручка], SAMEPERIODLASTYEAR(Date[Дата]) )
RETURN
DIVIDE( Текущий - Прошлый, Прошлый )Месяц Выручка 2026 Выручка 2025 Прирост YoY Янв 100 80 +25% Фев 150 120 +25% Мар 120 150 −20% Апр 90 100 −10%
Иллюстрация формулы прироста
current = 120
prev = 150
growth = (current - prev) / prev
print("Прирост YoY:", round(growth * 100, 1), "%")Вывод:
Прирост YoY: -20.0 %
Как работает под капотом
SAMEPERIODLASTYEAR берёт набор дат из текущего контекста фильтра, сдвигает каждую на год назад и возвращает новый набор, который CALCULATE использует как фильтр. Поэтому функция корректно работает на любом уровне — день, месяц, квартал, год: она просто переносит «видимый» период на 365/366 дней назад по таблице дат. Без полноценной таблицы дат сдвиг невозможен.
Частые ошибки
- Делить на ноль в прошлом периоде. Если год назад продаж не было, используйте
DIVIDE— оно вернёт пусто вместо ошибки. - Сравнивать неполный текущий период с полным прошлым. Если текущий месяц ещё не закончился, YoY будет занижен — это нужно учитывать в интерпретации.
- Считать YoY без таблицы дат. Как и весь time intelligence, требует помеченного календаря.
Итог
- YoY сравнивает период с тем же периодом год назад, гася сезонность.
SAMEPERIODLASTYEAR(илиDATEADD) сдвигает период на год; прирост считают черезDIVIDE.- Следите за делением на ноль и неполнотой текущего периода при интерпретации.