Бывает такое: строишь отчёт в Power BI, смотришь на диаграмму и думаешь: «Хочу сравнить текущий год с предыдущими, и чтобы всё это понятно смотрелось на одной странице». Думаю, знакомо многим 🙂


Обычно для этого используют формулы DAX – CALCULATE и DATEADD, как на рисунке в первом варианте. Работает отлично, но есть нюанс: на диаграмме вместо привычных «2022», «2021» и «2020» вы видите подписи «Текущий год», «Прошлый год» и т.д. Пользователи иногда теряются: «А за какой это год?» И могут попросить показывать год сразу в легенде графика.
Как показать сравнение выбранного года с предыдущими?
Хочется, чтобы всё было прозрачно – выбрали год на срезе, а Power BI сам подтянул и предыдущие, плюс показал их настоящими числами, а не словами. Хорошая новость: так можно сделать!
В этой статье разберём, как настроить отчёт, чтобы годы отображались именно так, как нужно. Чтобы вам было удобнее читать, к статье приложен файл.

«Классическое» решение
Работа с предыдущими периодами в Power BI предусмотрена – с помощью формул CALCULATE и DATEADD. Это хорошее решение, но в отчет не получится добавить подпись по Году, только названия мер («текущий, прошлый, позапрошлый»).
Предыдущий год =
CALCULATE (
[Показатель],
DATEADD ( 'Календарь'[Date], -1, YEAR )
)

Решение с DAX-таблицей и мерой
Это решение позволит добавлять Год в область условных обозначений диаграмм, все просто: создаем таблицу и меру. Срез всегда будет фильтровать таблицу, из которой он добавлен. Поэтому нам потребуется формула VALUES и вычисляемая таблица, связанная с таблицей дат — Календарем.
Годы = VALUES ( 'Календарь'[Год] )

Чтобы показать в отчете данные за несколько лет с периодами в области условных обозначений или в заголовках таблиц, создаем специальную меру:
три года =
VAR _MaxDate = CALCULATE (
MAX ( 'Календарь'[Date] ), ALLSELECTED() )
VAR _MaxYear = YEAR ( _MaxDate )
RETURN
CALCULATE (
SUM ( 'Данные'[Факт] ),
KEEPFILTERS (
'Календарь'[Год] = > _MaxYear - 2 &&
'Календарь'[Год] <= _MaxYear
),
REMOVEFILTERS ('Календарь'[Год] )
)

Готово! Создаем диаграммы и графики, где в области условных обозначений будет Год.



