Как создать совокупную сумму по нескольким столбцам в Power BI?

У меня есть таблица на рабочем столе Power BI, по которой я пытаюсь создать совокупную сумму. Это SQL для создания этой таблицы:

create table #sample
(
DOS_Month               varchar(6)
,CRD_Month              varchar(6)
,Credit_Received_Date   date
,DaysElapsed            varchar(20)
,Last_Mo_Collections    decimal(13,0)
)
insert #sample values('201707','201708','8/2/2017','01',11470)
insert #sample values('201707','201708','8/3/2017','01',2821)
insert #sample values('201707','201708','8/4/2017','01',1361)
insert #sample values('201707','201708','8/7/2017','01',9040)
insert #sample values('201707','201708','8/3/2017','02',2397)
insert #sample values('201707','201708','8/4/2017','02',5101)
insert #sample values('201707','201708','8/7/2017','02',2256)
insert #sample values('201707','',NULL,'Complete Month',1041764)

После добавления столбца совокупной суммы эта таблица должна выглядеть так:

DOS_Month   CRD_Month   Credit_Received_Date    DaysElapsed Last_Mo_Collections Cumulative
$201,707    201708  8/2/2017    1   $11,470 $11,470
$201,707    201708  8/3/2017    1   $2,821  $14,291
$201,707    201708  8/4/2017    1   $1,361  $15,652
$201,707    201708  8/7/2017    1   $9,040  $24,692
$201,707    201708  8/3/2017    2   $2,397  $27,089
$201,707    201708  8/4/2017    2   $5,101  $32,190
$201,707    201708  8/7/2017    2   $2,256  $34,446
$201,707            Complete Month  $1,041,764  $1,076,210

Как это сделать с помощью DAX или Quick Measures? Кроме того, я не могу использовать функции времени для их суммирования, поскольку DOS_Month и CRD_Month не являются типами данных времени.


person salvationishere    schedule 08.08.2017    source источник


Ответы (1)


Эта формула должна дать вам столбец желаемой совокупной суммы.

Cumulative = CALCULATE(
    SUM(Table1[Last_Mo_Collections]), 
    FILTER(
        Table1, 
        Table1[DOS_Month] = EARLIER(Table1[DOS_Month]) &&
        (
            (
                Table1[DaysElapsed] = EARLIER(Table1[DaysElapsed]) && 
                Table1[Credit_Received_Date] <= EARLIER(Table1[Credit_Received_Date])
            ) || (
                Table1[DaysElapsed] < EARLIER(Table1[DaysElapsed])
            )
        )
    )
)

Результаты

Функция EARLIER является ключевой (и, на мой взгляд, названа ужасно) . Из документации функция ...

Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца.

person Joe Gravelyn    schedule 09.08.2017