Расчет суммы накопленного итога
Расчет суммы накопленного итога может проводиться как за определенный период времени (со сбросом после окончании указанного периода), так и без привязки к какому-либо периоду (без сброса).
В первом случае это может быть необходимо, если, например, вы хотите провести аналитику продаж по годам и вам интересно узнать, как происходит накопление внутри каждого года. Во втором случае вам могут пригодиться такие расчеты, если, например, у вас крупный проект, который длится больше года, и вы хотите знать, сколько ресурсов потрачено с начала проекта до текущего момента. Мы рассмотрим оба варианта.
Расчет суммы накопленного итога за определенный период (со сбросом)
В данном примере мы рассчитаем накопленный итог продаж за год. Для расчетов мы будем использовать формулу, которая позволяет посчитать накопленный итог от начала года до текущей даты по каждому дню со сбросом по годам. С помощью такой формулы можно выполнить любое разбиение визуализируемых данных – по дням, неделям, месяцам, кварталам и полугодиям.
Используемые данные
Таблица фактов | Таблица измерений |
---|---|
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
.
Для сравнения двух расчетов мы создали две меры (Накопленный итог и Накопленный итог без сброса) и разбили данные по месяцам:
Смотрите также
Нужна дополнительная помощь?