Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hello Community,
I have been calculating Drawdown = Current Value / Rolling Maximum (or high water mark) for each different label. I have this DAX formula working, however, it is very laggy to process that I am looking to optimize.
I was thinking of adding a specific column for Rolling Maximum would remove the calculation from the DAX. However, I am finding that the same logic filters can not be applied to a calculated column as a DAX formula.
When I try a formula such as what is listed below, it simply populates the max value in that column and does not refer to the date (or an index that I created) to keep proper filtering. Is there a trick to calculated columns that I am missing?
Thanks for any hints in advance
Solved! Go to Solution.
For your case, i would suggest you use Date hierarchy in the x-axis, since there are to many day in the axis, so the calculation will be very slow, so you'd better just use Year-quarter-Month in the visual, do not use dim day any more.
here is sample pbix file, please try it.
Regards,
Lin
Can you provide more context behing Laggy?
is the measure taking to long to calculate when you select slicers?
are you using this in a measure or calculated column?
need a bit more info to try and help
@amitchandak That seems to grab the max value within the day across the different IDs but does not create a rolling max per ID.
What I was looking for:
ID // Date // Value // Max
1 // 1.1 // 40 // 40
1 // 1.2 // 30 // 40
1 // 1.3 // 50 // 50
2 ...
@Anonymous here is a link to the file that replicates what I am talking about. My charts on the actual file take ~40 - 60 seconds to load and I am planning to scale the file much more significantly (my file has about 5 IDs). And yes, when changing different factors and parameters needing to reload (or drilling down) takes a while. Ultimately, looking for a less computationally intensive way to calculate this. I was thinking that if I created a calculated column that had preprocessed the rolling maximum value it would cut down on load time significantly.
https://1drv.ms/u/s!AqA0zdOdqkphhU41gG8baO20fZTq?e=2K4VPX
Thanks for the help so far!
@Power_BI_Help , it can if the ID is present in the visual table
Else put in calculate and force Id using values(Table[ID])
@amitchandak
The function seems to grab the last non blank value (i.e. the same day) not the maximum value of all the dates leading up to that day. I attached a photo with the formula you've stated and the incorrect graph it creates when compared to the correct chart on the left. The calculated column does the same. It is not an all time high value for the column up to that date....
Ideas?
I appreciate the comments.
For your case, i would suggest you use Date hierarchy in the x-axis, since there are to many day in the axis, so the calculation will be very slow, so you'd better just use Year-quarter-Month in the visual, do not use dim day any more.
here is sample pbix file, please try it.
Regards,
Lin
D'oh, can't believe that was all I needed to do. So much faster and more scalable, thanks.
@Power_BI_Help , Not clear. Can you share sample data and sample output in table format?
You can try like this
lastnonblankvalue(Date'[Date], max('Daily Ledgers'[Portfolio - Equity Total EOD ($)]))
refer:https://www.linkedin.com/pulse/five-recent-power-bi-functions-you-should-use-more-often-amit-chandak
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
113 | |
97 | |
79 | |
73 | |
56 |
User | Count |
---|---|
145 | |
105 | |
104 | |
90 | |
63 |