Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
I've run a trace on my DAX query, and many rows in the server timings show MinMaxColumnPositionCallback in bold, indicating it is a performance problem. I googled and get zero results.
Has anyone got some info on this?
Hi @AlexOnData
The MinMaxColumnPositionCallback in server timings indicates that Power BI is calculating the minimum and maximum positions of a column, often due to filtering or range queries on large datasets. This can cause performance issues, especially with high-cardinality columns.
Optimize Columns:
Refactor DAX:
Optimize Relationships:
Check Visuals:
Use DAX Studio:
Refining filters, columns, and relationships will usually resolve this issue.
Did I answer your question? Mark my post as a solution, this will help others!
If my response(s) assisted you in any way, don't forget to drop me a "Kudos" 🙂
Kind Regards,
Poojara
Data Analyst | MSBI Developer | Power BI Consultant
Consider Subscribing my YouTube for Beginners/Advance Concepts: https://youtube.com/@biconcepts?si=04iw9SYI2HN80HKS
Try to ask this question to Marco Russo and/or Alberto Ferrari. If there's anything to know about it... they are the ultimate source of knowledge about anything DAX.
I know this is over 2 years late, but the SQLBI folks do have some docs on this now, available here:
xmSQL code in VertiPaq - SQLBI Docs
Quote:
MinMaxColumnPositionCallback: Transforms a column value into its position in the list of all values of the column properly sorted. The transformation uses the attribute hierarchy. If the attribute hierarchy is disabled (Available in MDX=False), then this callback cannot be used, and the column must be materialized to the formula engine to find min/max values.
Hope this helps whoever searches for this obscure callback type in the future!
I also (sort of) found another fix/cause for this callback.
I'm unfortunately dealing with a DirectQuery model, due to pre-existing architectural choices that are now being re-evaluated. The partiuclar source is Dremio Cloud, which is actually pretty fast and only has a few quirks around DQ, versus the many sources where DQ is terrible for performance. Still not as fast as Import or DirectLake, but changing a whole model mode is not something that can be changed in a few minutes after data load and partitioning strategies are considered. All that said, I have no idea if the below finding would apply in Import mode.
In this particular example, a column, let's call it
'Reporting Scenario'[Scenario]
in a Dual-mode table was being evaluated in a SELECTEDVALUE(), and didn't have a sort order column applied. There actually was a sort order column, let's call it
'Reporting Scenario'[Scenario Sort Order]
in the same table that was intended to be used, but wasn't applied. Evaluation of this column showed that MinMaxColumnPositionCallback was being evaluated for the column. Applying the sort order column lead to a much simpler xmSQL statement without a MinMaxColumnPositionCallback on re-runs of an otherwise identical query.
Not all such columns where SELECTEDVALUE() would be used will have a meaningful sort order, and again I have no idea if this applies just to DirectQuery, DirectQuery over Dremio, or will hold in future versions of the Power BI engine. I've also rarely seen this callback be a meaningful performance issue in Import models, so unless there's some compelling reason or evidence that this callback is leading to other performance issues in the same measure/query, getting rid of this callback is unlikely to significantly improve report performance. But doesn't hurt to try if time and resources allow.
How do I go about asking these gents?
@Anonymous you can ping users on forums using @ and their name e.g. '@marcorusso or '@AlbertoFerrari.
For my take to your dilemma I recommend checking this blog by entreprisedna: Performance Issue In DAX Studio: CallBackDataID - Enterprise DNA
It discusses the likely reason these rows are bolded and a solution proposal to the issue.
Proud to be a Super User!
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
16 | |
13 | |
12 | |
11 | |
11 |
User | Count |
---|---|
19 | |
14 | |
14 | |
11 | |
9 |