Forum Discussion
PREVIOUSMONTH for text values
Hi,
New to PowerBI. Is there any way to use PREVIOUSMONTH for text values? I have a matrix, the rows are different pay elements, the columns are current month amount, current month currency, previous months amount. I want to add previous months currency but CALCULATE and PREVIOUSMONTH doesn't work (this is what i've used to get previous months amount). Feel like it should be simple, like replacing calculate for something else because it's text but i can't find a solution anywhere!
Many thanks in advance
Hi, Thomas:
1. I reccomend it always use a calendar table to easy work with dates. You can create a simple one with CalendarAuto Function. Related it with your dataTable. You also can Add a New Columns with the Years, Quarters, Months, etc-
2. Works with measures in every that you can with agreggations. (SUM, MIN, MAX, etc)
3. Now for your question, one way to solve it is :
CurrentMonthAmount = SUM(Table1[Amount])
CurrentMonthCurrency = SELECTEDVALUE(Table1[Currency],BLANK())
Previous Month Amount = Var _MINDATE=EDATE(MIN(CalendarTable[Date]), -1) RETURN IF(HASONEVALUE(Table1[Element]),CALCULATE(SUM(Table1[Amount]),FILTER(ALL(CalendarTable),CalendarTable[Date]=_MINDATE)))
Previous Month Currency = Var _MINDATE=EDATE(MIN(CalendarTable[Date]), -1) RETURN IF(HASONEVALUE(Table1[Element]),CALCULATE(VALUES(Table1[Currency]),FILTER(ALL(CalendarTable),CalendarTable[Date]=_MINDATE)))
Use in the slicer the month column of your calendar table.
Regards
Victor
6 Replies
- dax
Community Support
Hi Thomas_Paul28,
Below is my design(I use simple sample, if your sample is not similar to mine, please inform me your data sample)
id ym amount month 1 2019 12 1 1 2019 10 2 1 2019 3 3 1 2019 5 4 2 2019 20 1 2 2019 15 2 2 2019 3 3 2 2019 20 4 3 2019 13 1 3 2019 3 2 3 2019 25 3 3 2019 20 4 then I create two measures
temp = CALCULATE ( SUM ( test[amount] ), FILTER ( ALLEXCEPT ( test, test[id] ), test[month] = MIN ( test[month] ) - 1 ) ) Measure 4 = IF(HASONEVALUE(test[month]),[temp], SUMX(test,[temp]))Then you could create matrix like below
Best Regards,
Zoe ZhiIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- Thomas_Paul28Frequent Visitor
Hi Zoe,
Thankyou for the quick response! :) The below is how my matrix looks and 'prior month currency' is what im trying to get to populate. Unfortunately your solution seems to be returning that column as blank.
Element Prior Month Amount Prior Month Currency (Measure 4) Current Month Amount Current Month Currency Net Salary 3000 USD 3000 USD Transport 100 USD 100 USD Expenses 1100 GBP 300 USD To be clearer my data sample looks like the below:
Month ID Element Amount Currency 01/07/2019 14650 Net Salary 3000 USD 01/07/2019 14650 Transport 100 USD 01/07/2019 14650 Expenses 1100 GBP 01/08/2019 14650 Net Salary 3000 USD 01/08/2019 14650 Transport 100 USD 01/08/2019 14650 Expenses 300 USD Many thanks!
Tom
- dax
Community Support
Hi
Based on your sample, you could try to create measures like below and use Table to show it
current = CALCULATE(SUM(tt[Amount]),FILTER(tt, YEAR(tt[Month])=YEAR(TODAY()) && MONTH(tt[Month])=MONTH(today()))) current c = CALCULATE(MIN(tt[Currency]),FILTER(tt, YEAR(tt[Month])=YEAR(TODAY()) && MONTH(tt[Month])=MONTH(today()))) previous = CALCULATE(SUM(tt[Amount]), FILTER(tt, YEAR(tt[Month])=YEAR(TODAY()) && MONTH(tt[Month])=MONTH(today())-1)) previous c = CALCULATE(MIN(tt[Currency]), FILTER(tt, YEAR(tt[Month])=YEAR(TODAY()) && MONTH(tt[Month])=MONTH(today())-1))
Best Regards,
Zoe ZhiIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.