Сравнение с прошлым периодом (YoY, MoM)
Задача
Сравнить продажи текущего периода с продажами предыдущего месяца и аналогичным месяцем прошлого года на одном графике (три линии).
Проблема
Без сложных подзапросов или оконных функций со сдвигом (LAG) трудно подтянуть данные за другой период, динамически привязанный к текущей дате.
Решение
Для сдвига по дате создадим таблицу с календарем, подключим к данным и реализуем расчеты со сдвигом
-
Создаем новую таблицу календаря

-
Добавим запрос для заполнения календаря в секцию Read
В данном запросе мы создаем CTE с датами начиная с 2010 года и на 2 года вперед от текущего момента. Дальше для каждой даты получаем ее id формулой toYYYYMMDD и добавим поле для форматированного вывода даты. Дальше объединяем 3 раза и указываем разный offset.
- offset = ‘0’: Даты без преобразования берутся из CTE. Данная часть будет ссылаться на текущие данные
- offset = ‘-1Y’: Даты берутся такие же, но id даты указывает на дату с прошлогодним id
- offset = ‘-1M’: Аналогично с -1Y, но id указывает на id прошлого месяца
-
Далее необходимо добавить поле для связи в нашу таблицу с продажами. В качестве этого поля выступает id даты (функция - toYYYYMMDD(<поле с датой>)

-
В модели данных основной датасет (с фактами) связывается с календарем по полю даты (LEFT JOIN).

-
На дашборде создаем 3 показателя с разным условием для поля offset

-
В качестве разреза используем название месяца

Итог
Получили график с возможностью сравнивать значения с прошлым месяцем или годом.

Также такую формулу можно использовать в KPI карточке:
- Используем те же формулы в переменных, и рассчитаем отклонение в процентах

- В блоке текста указываем переменные

Результат
Получили простую карточку с сравнение текущей выручки с выручкой в прошлом месяце
