[英]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
,我假設您在A
和B
列上都需要匹配。
NewCol =
CALCULATE (
SUM ( Table1[AMT] ),
ALLEXCEPT ( Table1, Table1[A], Table1[B] ),
PREVIOUSMONTH ( Table1[C] )
)
這將對AMT
列求和,並保持A
和B
列的行上下文,並指定上個月作為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/2019
, EOMONTH ( date, -2 )
返回3/31/2019
。 加一天即可獲得4/1/2019
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.