Перейти к основному содержимому

Сравнение с прошлым периодом (YoY, MoM)

Задача

Сравнить продажи текущего периода с продажами предыдущего месяца и аналогичным месяцем прошлого года на одном графике (три линии).

Проблема

Без сложных подзапросов или оконных функций со сдвигом (LAG) трудно подтянуть данные за другой период, динамически привязанный к текущей дате.

Решение

Для сдвига по дате создадим таблицу с календарем, подключим к данным и реализуем расчеты со сдвигом

  1. Создаем новую таблицу календаря

  2. Добавим запрос для заполнения календаря в секцию Read

    В данном запросе мы создаем CTE с датами начиная с 2010 года и на 2 года вперед от текущего момента. Дальше для каждой даты получаем ее id формулой toYYYYMMDD и добавим поле для форматированного вывода даты. Дальше объединяем 3 раза и указываем разный offset.

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

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

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

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

Итог

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

Также такую формулу можно использовать в KPI карточке:

  1. Используем те же формулы в переменных, и рассчитаем отклонение в процентах

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

Результат

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