2017-08-08 188 views
0

我在Power BI桌面上有一張表,我試圖創建一個累積和。這是創建該表的SQL:如何在Power BI中的多個列上創建累計和?

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或快速的措施?另外,由於DOS_Month和CRD_Month不是時間數據類型,因此我無法使用時間函數來求和這些時間函數。

回答

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

Results

EARLIER功能是關鍵(在我看來可怕的名字命名)。從文檔中,函數...

返回提到的列的外部評估階段中指定列的當前值。