简体   繁体   English

如何在Power BI中的多个列上创建累积和?

[英]How to create a cumulative sum over multiple columns in Power BI?

I have a table in Power BI desktop that I'm trying to create a cumulative sum on. 我试图在Power BI桌面上创建一个累加的总和。 This is the SQL to create this table: 这是创建此表的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)

After adding the cumulative sum column, this table should look like this: 添加累加和列之后,此表应如下所示:

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

How can I do this using DAX or Quick Measures? 如何使用DAX或快速测量来做到这一点? Also, I can't use the time functions in order to sum these either since DOS_Month and CRD_Month aren't time datatypes. 另外,由于DOS_Month和CRD_Month都不是时间数据类型,因此我不能使用时间函数来对它们进行求和。

This formula should give you your desired cumulative sum column. 该公式将为您提供所需的累积总和列。

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])
            )
        )
    )
)

结果

The EARLIER function is the key (and in my opinion horribly named). EARLIER函数是关键(在我看来,它的名字叫恐怖)。 From the documentation, the function... 从文档中可以看到...

Returns the current value of the specified column in an outer evaluation pass of the mentioned column. 返回所提及列的外部评估遍中指定列的当前值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM