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

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.

Reply
akapelle
Frequent Visitor

Sumx measure result differs when replacing an expression with an identical variable

When I enter part of a sumx expression as variable instead of directly coding it in the measure, I get a different (the expected) result.

 

Below a simplified example. Sample data =

MonthAccountIDBalanceTotal
11001500
11002500
21001500
21002500

 

Expected result of measure

Multiply the balance of each row with the max selected month. So when both months selected, multiply each 500 with 2.
Note: I know in this simplified example I don't need sumx but can simply do sum(Balance)*calculate(max(allselected,Month)). But in the more complex real life example I do need a sumx measure and the difference is same as below.

 

I originally created this measure 'Balance x maxmonth':

 

 

var _sumx = 
    sumx(Balances,Balances[Balance]*
        calculate(
            max(Balances[Month])
            ,ALLSELECTED(Balances[Month])
            )
        )
return
_sumx

 

 

This does not return the expected result when a visual is aggregated on month level. However if I replace the 'calculate' part of the sumx expression into a variable like below it does:

 

Balance x maxmonth with var = 
var _maxmonth = 
    calculate(
        max(Balances[Month])
        ,ALLSELECTED(Balances[Month])
        )
var _sumx = 
    sumx(Balances,Balances[Balance]*
    _maxmonth
    )
return
_sumx

 

Results with and without variable for the calculate part of the expression:

akapelle_0-1634641350850.png


Can anyone explain why the use of a var could lead to a different result outcome? 
I'm happy with the fix but want to understand this difference in behavour when using variables within a sumx expression.

 

Many thanks.

1 ACCEPTED SOLUTION
Greg_Deckler
Super User
Super User

@akapelle In the first case, the CALCULATE is being evaluated for each row while in the second case it is evalulated once within the full context of the measure.


@ 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!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

1 REPLY 1
Greg_Deckler
Super User
Super User

@akapelle In the first case, the CALCULATE is being evaluated for each row while in the second case it is evalulated once within the full context of the measure.


@ 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!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.