Накопительный итог (YTD) и TOTALYTD
Считаем нарастающий итог с начала года — базовый приём управленческой отчётности.
Накопительный итог (YTD, year-to-date) — сумма показателя с начала года до текущей даты, нарастающим итогом.
Зачем нужен накопительный итог
Руководителю важна не только выручка за июнь, но и «сколько накопили с января». YTD показывает прогресс к годовой цели: на графике видно, идём мы в плане или отстаём. Это один из самых востребованных расчётов в отчётности, и DAX делает его одной функцией — при условии, что есть правильная таблица дат.
TOTALYTD
Семейство time-intelligence функций умеет считать накопительные итоги «из коробки»:
Выручка YTD = TOTALYTD( [Выручка], Date[Дата] )Функция берёт меру [Выручка] и пересчитывает её для периода «от 1 января текущего года до текущей даты в контексте». В строке за март она даст сумму янв+фев+март, в строке за июнь — янв…июнь. Аналоги: TOTALQTD (с начала квартала), TOTALMTD (с начала месяца).
Месяц Выручка Выручка YTD Янв 100 100 Фев 150 250 (100+150) Мар 120 370 (+120) Апр 90 460 (+90) Май 200 660 (+200) Июн 180 840 (+180)
Через CALCULATE вручную
Полезно понимать, что под капотом это просто CALCULATE с диапазоном дат:
Выручка YTD (вручную) = CALCULATE(
[Выручка],
DATESYTD( Date[Дата] )
)DATESYTD возвращает набор дат от начала года до текущей, а CALCULATE применяет его как фильтр. Это та же логика, просто разложенная на части — и именно так устроены почти все time-intelligence функции.
Финансовый год
Если год компании начинается не с января (например, с 1 апреля), это указывают третьим аргументом — датой конца финансового года: TOTALYTD([Выручка], Date[Дата], "31/03"). Тогда накопление стартует с апреля. Игнорировать это нельзя: иначе YTD будет считаться по календарному году и расходиться с управленческой отчётностью.
Как работает под капотом
В контексте строки (скажем, «Июнь 2026») функция определяет текущую дату, строит диапазон от начала года до неё и накладывает этот диапазон как фильтр на таблицу дат. По связи фильтр спускается к фактам, и мера суммируется по нужным дням. Именно поэтому критична непрерывная помеченная таблица дат: без неё диапазон не построится и YTD вернёт неверный результат или ошибку.
Частые ошибки
- Считать YTD без таблицы дат. Time intelligence требует помеченной непрерывной таблицы дат — иначе расчёт ломается.
- Забыть про финансовый год. Для нестандартного года нужен третий аргумент с датой его окончания.
- Помещать YTD без оси времени. Накопительный итог осмыслен на оси дат/месяцев; в одной карточке без периода он равен годовой сумме.
Итог
- YTD — сумма с начала года нарастающим итогом, показывает прогресс к цели.
TOTALYTD(иDATESYTDвнутри CALCULATE) считают его при наличии таблицы дат.- Для нестандартного финансового года задавайте дату его конца третьим аргументом.