Forum Discussion
Calculate Percentage change from previous value
So I have a simple table called MasterData that I am trying to calculate the % difference between the current value and the last previous value
I am using a measure to get the last process date for a particular reference -
Last Run Date = CALCULATE(MAX( MasterData[ProcessDate] ),FILTER( ALL(MasterData) ,MAXX( FILTER( MasterData, EARLIER( MasterData[ProcessDate] ) < MasterData[ProcessDate] && EARLIER( MasterData[Reference]) = MasterData[Reference]), MasterData[ProcessDate] )))
Which returns
Which is correct, what I now want to to do return the CostPerTon for that Last Run Date and then show the most recent costperton as a % increase/decrease against the costperton for the last run date.
I'm just not sure how should I go about this? I know its 'should' be simple but I'm going round in circles.
Cheers
Hi RyanW,
At first, please note that we can only create measure and calculated column in Power Bi desktop. So I test in Power BI desktop.
After several days' test, I tried many solutions. Finally, I get the previous day's value. Please create a measure using the formula.Prvious-day-value = Var DD=MasterData[Last Run Date] RETURN CALCULATE(MAX(MasterData[CostPerTon]),FILTER(ALLSELECTED(MasterData),MasterData[ProcessDate]=DD))
Then create a measure to get the increase/decrease percentage.Percentage = (MAX(MasterData[CostPerTon])-MasterData[Prvious-day-value])/MAX(MasterData[CostPerTon])
Please download the attachments to review more details.
Best Regards,
Angelia
9 Replies
- v-huizhn-msft
Microsoft Employee
Hi RyanW,
Please create a calculated column to return the CostPerTon for that Last Run Date using the LOOKUPVALUE function as follows.the last CostPerTon=LOOKUPVALUE(MasterData[CostPerTon], MasterData[ProcessDate], MasterData[Last Run Date])
>>then show the most recent costperton as a % increase/decrease against the costperton for the last run date.
How to show the most recent costperton? In my oppion, the most recent date is equal to the last data. Please share more details for further analysis.
Best Regards,
Angelia- RyanWFrequent Visitor
Thanks for the reply Angelina,
Unfrotunately that doesn't work in this case and I get the error "A table of multiple values was supplied where a single value was expected."
It would need to take into account the ProcessDate & Reference to return the unique value for that day. i.e. there can be multiple ProcessDates entries for each date but only one Reference for each relating to a particular date.
The data in my example is just a small extract from the overall data, what I'm actually doing is extracting data from our Sales system, our personnel system and our logistics systems and combining them to give a number of delivery performance dashboards based around our KPI's.
Thanks
RyanW
- v-huizhn-msft
Microsoft Employee
Hi RyanW,
Please create the calculated column using the following formulas.Column=IF(MasterData[ProcessDate]=MasterData[Last Run Date],MasterData[CostPerTon],0) the last CostPerTon=CALCULATE(MAX(Column),ALLEXCEPT(MasterData,MasterData[Reference]))
Thanks,
Angelia