簡體   English   中英

Power BI(DAX)中具有當前行值和先前日期的計算列

[英]Calculated Column with Current Row Values and Previous Dates in Power BI (DAX)

我正在嘗試獲取一個計算列(而非度量值),該列基於該表當前行中的值(相對於當前行中的日期滯后1個月)獲得該列的總和。 我的表中的日期僅是每個月的第一天。 我在問有關DAX的問題; 但是,如果有這樣的解決方案,我也可以在Power Query中的M語言中實現(實際上可能會更喜歡)。

我已經能夠使用這種方法來采取措施。

CALCULATE(SUM(AMT), DATEADD(DATECOLUMN, -1, MONTH))

但是我想成為一個新專欄。

假設表看起來像這樣。

A    B        C          D     AMT
6    BAC456   5/1/2019   TEST  25
2    EPS123   4/1/2019   TEST  45
2    EPS123   3/1/2019   TEST  65
6    BAC456   4/1/2019   TEST  43
6    BAC456   4/1/2019   TEST  88
7    GRE123   4/1/2019   TEST  90
9    BAC456   4/1/2019   TEST  43

我想在此表中還有另一列,其中第一行是:

A    B         C          D      AMT   NEWCOL
6    BAC456    5/1/2019   TEST   25    131

第二行是:

A    B         C          D      AMT   NEWCOL
2    EPS123    4/1/2019   TEST   45    65

等等..

如果月份列是整個表中的第一個月,則NEWCOL為0

為了在計算列中輕松實現這一點,在編寫最終DAX之前,您需要類似以下內容。

Month Num = MONTH(MyTable[C])
Month Diff = DATEDIFF(MyTable[C],MAX(MyTable[C]),MONTH)

現在,您已經定義了這些月份差異和月份編號,您可以編寫這樣的DAX-

Amount - New Column = 
Var selectedValue_B = MyTable[B]
Var SelectedValue_MonthDiff = MyTable[Month Diff]
Var out1 = CALCULATE(SUM(MyTable[AMT]), FILTER(ALL(MyTable), MyTable[Month Diff] = SelectedValue_MonthDiff+1 && MyTable[B] = selectedValue_B)) + 0
return out1

這使我的桌子看起來像

在此處輸入圖片說明

我在公式中使用了Var(變量),以幫助您了解公式中正在發生的事情。

如果可以解決您的問題,請接受答案。

要獲得131 ,我假設您在AB列上都需要匹配。

NewCol =
CALCULATE (
    SUM ( Table1[AMT] ),
    ALLEXCEPT ( Table1, Table1[A], Table1[B] ),
    PREVIOUSMONTH ( Table1[C] )
)

這將對AMT列求和,並保持AB列的行上下文,並指定上個月作為C的過濾器。 請注意,對於沒有上個月的行,這將返回空白。 如果您希望使用0 ,請在最后一個右括號后面加上+ 0


如果PREVIOUSMONTH不起作用,請嘗試以下操作:

NewCol =
CALCULATE (
    SUM ( Table1[AMT] ),
    ALLEXCEPT ( Table1, Table1[A], Table1[B] ),
    Table1[C] = EOMONTH ( EARLIER( Table1[C] ), -2 ) + 1
)

對於date = 5/1/2019EOMONTH ( date, -2 )返回3/31/2019 加一天即可獲得4/1/2019

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM