2015-10-06 60 views
0

示例工作簿:http://1drv.ms/1VDgAjf功能與使用DAX的SUMIFS相似?

我有類似表:

ActiveDate CommenceDate Amount 
------------------------------------------- 
20150115 20150201 10 
20150115 20150201 2 
20150223 20150301 3 
20150223 20150202 5 

我需要計算如下:

Date Amount 
--------------------- 
25-Jan-15 0 
30-Jan-15 0 
04-Feb-15 12 
09-Feb-15 12 
14-Feb-15 12 
19-Feb-15 12 
24-Feb-15 17 
01-Mar-15 20 
06-Mar-15 20 
11-Mar-15 20 

所以..在Excel中我測試過這以下聲明:

=SUMIFS(
    Table[amount] 
    ,Table[commence] ,"<="&TEXT(<<DateRef>>, "yyyymmdd") 
    ,Table[active] ,"<="&TEXT(<<DateRef>>, "yyyymmdd") 
) 

這工作正常..我的問題是,我如何複製這在DAX?

這是我最好的刺(假定日期維度,它連接到「CommenceDate」):

TotalAmount := 
CALCULATE (
    SUM (Table[Amount]), 
    FILTER (
     ALL ('Date'[Date]), 
     'Date'[Date] <= MAX ('Date'[Date]) 
    ) 
) 

我最好的想法(我認爲這是一個非常糟糕的想法),是增加一個新的列,給我更大的ActiveDate或CommenceDate,然後使用非活躍關係加入到,並使關係活躍只是爲此計算?

=IF([@active]>[@commence], [active], [commence]) 

想法?

回答

0

您在創建附加列的想法可能是最好的情況。無論你做什麼,你都必須逃避事務[開始]和DimDate [DateKey]之間的活躍關係才能正確工作。

在完成該操作後,您必須在上下文中針對當前日期過濾兩列([活動],[開始])。與導航單個關係並使用單個過濾器相比,這將更麻煩且效率更低。

需要注意的是,您需要先應用關係操作步驟,而不是使用過濾器操作步驟。這看起來像以下嵌套的CALCULATE():

TotalAmount:= 
CALCULATE(
    CALCULATE(
     SUM(Transactions[Amount]) 
     ,USERELATIONSHIP(Transactions[MaxDateKey], DimDate[DateKey]) 
    ) 
    ,FILTER(
     ALL('Date') 
     ,'Date'[Date] <= MAX('Date'[Date]) 
    ) 
) 
+0

是的,我認爲這是我們將要去..我將嘗試明天玩這個。 – m1nkeh