Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Anonymous
Not applicable

Need help optimizing DAX with SUMX

Hey everyone, 

 

I have a issue where my report is really slow, I think due to my nested measure and my final measure im using which uses the DAX Function SUMX.

 

SAIDI_CIRCUIT_SUM = SUMX(VALUES(REF_CIRCUIT[NOTIFICATION_DESCRIPTION]),[SAIDI_CKT!])

 

My question is does anyone know a more optimized version of SUMX which will give me the same result but faster. These are the amount of measures I needed to arrive at my SAIDI_CIRCUIT_SUM. Any help would be useful. 

 

What im doing is taking the first value from the from date on the slicer, taking the first value from the to date on the slicer and summing together then dividing it by 2 (As seen from measure CKTAVGMETERCNT). After that i take customer mins/ CKTAVGMETERCNT as seen with measure SAIDI_CKT! After i make it relevant only to the notification description with the measure SAIDI_CIRCUIT_SUM. 

 

CKT_FROM_DATE_FROM_SLICER = CALCULATE(MIN(DIM_DATE_CKT[DATE]),ALLSELECTED(DIM_DATE_CKT[DATE]))
 
CKTSumFromCount = CALCULATE(MIN(CV_SAP_METERCOUNT_CIRCUIT[READVALUE_FROM]), FILTER(DIM_DATE_CKT,DIM_DATE_CKT[DATE] = [CKT_FROM_DATE_FROM_SLICER]))
 
CKT_TO_DATE_FROM_SLICER = CALCULATE(MAX(DIM_DATE_CKT[DATE]),ALLSELECTED(DIM_DATE_CKT[DATE]))
 
CKTSumToCount = CALCULATE(MAX(CV_SAP_METERCOUNT_CIRCUIT[READVALUE_TO]), FILTER(DIM_DATE_CKT,DIM_DATE_CKT[DATE] = [CKT_TO_DATE_FROM_SLICER]))
 
CKT_First_Value_From_Date = CALCULATE([CKTSumFromCount],FIRSTNONBLANK(DIM_DATE_CKT[DATE], [CKTSumFromCount]))
 
CKT_Last_Value_To_Date = CALCULATE([CKTSumToCount],LASTNONBLANK(DIM_DATE_CKT[DATE], [CKTSumToCount]))
 
 
CKTMeterCount = IF(COUNT(CV_SAP_METERCOUNT_CIRCUIT[READVALUE_FROM]) = 1, 2, 2)
 
CKTAVGMETERCNT = DIVIDE([CKT_First_Value_From_Date] + [CKT_Last_Value_To_Date], [CKTMeterCount])
 
SAIDI_CKT! = IFERROR(sum(ZPM_O01_PM_OUTAGE_SUMMARY[CUSTOMER_MINUTES_FOR_OUTAGE_SUMMARY])/[CKTAVGMETERCNT],BLANK())
 
SAIDI_CIRCUIT_SUM = SUMX(VALUES(REF_CIRCUIT[NOTIFICATION_DESCRIPTION]),[SAIDI_CKT!])
 
 
1 ACCEPTED SOLUTION
Greg_Deckler
Community Champion
Community Champion

@Anonymous  - I'm with @parry2k DAX performance issues are notoriously difficult to troubleshoot. See my blog article series here:

https://community.powerbi.com/t5/Community-Blog/Performance-Tuning-DAX-Part-1/ba-p/976275

 

I would say if you don't really need that VALUES statement, ditch it. A lot of people use that function when they don't need to and it costs them performance.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

3 REPLIES 3
Greg_Deckler
Community Champion
Community Champion

@Anonymous  - I'm with @parry2k DAX performance issues are notoriously difficult to troubleshoot. See my blog article series here:

https://community.powerbi.com/t5/Community-Blog/Performance-Tuning-DAX-Part-1/ba-p/976275

 

I would say if you don't really need that VALUES statement, ditch it. A lot of people use that function when they don't need to and it costs them performance.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@parry2k  @Greg_Deckler 

 

Thanks for feedback, I will try to explain more details when I post in the future. Actually, my problem is solved, teamates and I will just move these measure in the backend in the calculated tables itself - thanks!

parry2k
Super User
Super User

@Anonymous wow there is a lot more going on, in my opinion it will be easier if you put together sample data and what each measure is doing and what is the end goal, otherwise it is very hard to do reverse engineering



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors