Многие наверно уже слышали про AsOfCalendar, кто-то пропустил мимо, кто-то разобрался, я же предлагаю разложить это по полочкам чтобы не было ни у кого больше вопросов
Скрипт я взял на просторах небъятной паутины и добавил комментарии, можете его смело брать, вставлять в своё приложение и запускать загрузку данных
В переменнных vMin и vMax можете использовать любые значения
// Определим начальный и конечный период для генерации дат
let vMin = num(MakeDate(2015));
let vMax = num(MakeDate(2022));
// Создаем таблицу всех дат в заданном диапазоне
Temp:
Load
Date($(vMin) + RowNo() - 1) as Date
Autogenerate 1
While
Date($(vMin) + RowNo() - 1 ) < Date($(vMax));
// Создаем таблицу с месяцами
Month:
LOAD Distinct
Date(MonthStart(Date)) as Month
Resident Temp;
// Присоединяем месяцы к месяцам
Join(Month)
LOAD
Date(MonthStart(Date)) as AsOfMonth
Resident Temp;
// Создаем календарь со смещениями
AsOfCalendar:
Load
Month
, AsOfMonth
, Round( ( AsOfMonth - Month ) * 12 / 365.2425 ) as MonthDiff
, Year ( AsOfMonth ) - Year ( Month ) as YearDiff
Resident Month
Where
AsOfMonth >= Month;
// Удаляем не нужную таблицу
Drop table Month;
// Генерируем произвоольные продажи по месяцам
Sales:
Load
Round(Rand() * 100000 + 1, 2) as Sales
, MonthStart(DayStart($(vMin) + (rand() * ($(vMax) - $(vMin))))) as Month
Autogenerate 20000;
Создайте простую таблицу на листе, и добавьте в неё измерение - AsOfMonth
Далее мы создаем 5 мер, дополнительно я написал комментарии:
Sum(Sales) // Сумма продаж
Sum( {< MonthDiff = {"0"}>} Sales)
// Эта формула аналогична прошлой
Sum( {<MonthDiff = {"<3"}>} Sales )
// Эта формула считает продажи 3-ёх предыдущих месяцев
Sum( {<MonthDiff = {"<3"}>} Sales) /
Count(Distinct {< MonthDiff = {"<3"}>} Month)
// Эта формула считает средние продажи 3 предыдущих месяцев
// Удобно показывать в виде линии на комбинированной диаграмме
Sum( {<YearDiff = {"1"}>} Sales)
// Показывает продажи прошлого года
// Если указать вместо 1 -> 0 то будут отбражаться продажи текущего года,
// в котором находится AsOfMonth
Незабудьте поменять представление числа у мер, для лучшего восприятия