Расчет суммы накопленного итога может проводиться как за определенный период времени (со сбросом после окончании указанного периода), так и без привязки к какому-либо периоду (без сброса).
В первом случае это может быть необходимо, если, например, вы хотите провести аналитику продаж по годам и вам интересно узнать, как происходит накопление внутри каждого года. Во втором случае вам могут пригодиться такие расчеты, если, например, у вас крупный проект, который длится больше года, и вы хотите знать, сколько ресурсов потрачено с начала проекта до текущего момента. Мы рассмотрим оба варианта.
Расчет суммы накопленного итога за определенный период (со сбросом)
В данном примере мы рассчитаем накопленный итог продаж за год. Для расчетов мы будем использовать формулу, которая позволяет посчитать накопленный итог от начала года до текущей даты по каждому дню со сбросом по годам. С помощью такой формулы можно выполнить любое разбиение визуализируемых данных – по дням, неделям, месяцам, кварталам и полугодиям.
Используемые данные
Таблица фактов | Таблица измерений |
---|
salesfact Используемый столбец: | dimdate Используемый столбец: |
Для проведения расчетов, воспользуемся следующей формулой:
TOTALYTD(SUM(salesfact[salesamount]), dimdate[datekey])
где –
salesamount
– это столбец в таблице salesfact
, который содержит значения продаж.
SUM(salesfact[salesamount])
– суммирует значения в столбце salesamount
, вычисляя общую сумму продаж.
datekey
– столбец в таблице dimdate
, который содержит даты, по которым производится расчет.
Данная формула легла в основу новой меры – Накопленный итог, и с ее помощью мы визуализировали накопленный итог со сбросом по годам:
На изображении видно, что начиная с первого месяцам 2009 года накопление сбрасывается и происходит дальнейший накопительный расчет.
Описанная формула выполняет ту же вычислительную операцию, что и приведенная ниже формула:
CALCULATE (
SUM ( 'salesfact'[salesamount] ),
FILTER (
ALL ( 'dimdate' ),
AND( 'dimdate'[datekey] >= DATE ( YEAR(MAX('dimdate'[datekey])), 1, 1 ),
'dimdate'[datekey] <= MAXX ( 'dimdate', 'dimdate'[datekey]
))
)
)
Разница заключается только в том, что формула, в которой используется функция TOTALYTD
более проста.
Ограничения, касающиеся данной формулы:
Временно поддерживается только сброс данных по годам.
Не поддерживается фильтрация накопленного итога, а также нет возможности задать минимальную/максимальную дату для расчета накопления.
Расчет суммы накопленного итога без привязки к периодам (без сброса)
Для данного примера мы воспользуемся теми же данными, что в примере выше. Для выполнения расчета вы можете воспользоваться следующей формулой:
CALCULATE (
SUM ( 'factonlinesales'[salesamount] ),
FILTER (
ALL ( 'dimdate' ),
'dimdate'[datekey] <= MAXX ( 'dimdate', 'dimdate'[datekey]
))
)
Данная формула вычисляет общий объем продаж (salesamount
) за все даты, которые меньше или равны максимальной дате в таблице dimdate
. Это позволяет получить суммарные продажи без привязки к конкретному периоду, вплоть до самой последней даты, указанной в таблице dimdate
.
Для сравнения двух расчетов мы создали две меры (Накопленный итог и Накопленный итог без сброса) и разбили данные по месяцам:
Смотрите также
📄 Поддерживаемые функции DAX
📄 Создание мер