Расчет суммы накопленного итога

Расчет суммы накопленного итога может проводиться как за определенный период времени (со сбросом после окончании указанного периода), так и без привязки к какому-либо периоду (без сброса).

В первом случае это может быть необходимо, если, например, вы хотите провести аналитику продаж по годам и вам интересно узнать, как происходит накопление внутри каждого года. Во втором случае вам могут пригодиться такие расчеты, если, например, у вас крупный проект, который длится больше года, и вы хотите знать, сколько ресурсов потрачено с начала проекта до текущего момента. Мы рассмотрим оба варианта.

Расчет суммы накопленного итога за определенный период (со сбросом)

В данном примере мы рассчитаем накопленный итог продаж за год. Для расчетов мы будем использовать формулу, которая позволяет посчитать накопленный итог от начала года до текущей даты по каждому дню со сбросом по годам. С помощью такой формулы можно выполнить любое разбиение визуализируемых данных – по дням, неделям, месяцам, кварталам и полугодиям. 

Используемые данные

Таблица фактов

Таблица измерений

Таблица фактов

Таблица измерений

salesfact
Используемый столбец:

  • salesamount – сумма, которую заплатил клиент с учетом количества;

dimdate
Используемый столбец:

  • datekey – содержит уникальные значения, соответствующие конкретным датам.

Для проведения расчетов, воспользуемся следующей формулой:

TOTALYTD(SUM(salesfact[salesamount]), dimdate[datekey])

где –

  • salesamount – это столбец в таблице salesfact, который содержит значения продаж.

  • SUM(salesfact[salesamount]) – суммирует значения в столбце salesamount, вычисляя общую сумму продаж.

  • datekey  – столбец в таблице dimdate, который содержит даты, по которым производится расчет.

Данная формула легла в основу новой меры – Накопленный итог, и с ее помощью мы визуализировали накопленный итог со сбросом по годам:

со-сбросом.png

 

На изображении видно, что начиная с первого месяцам 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
Создание мер

Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.