cancel
Showing results for
Did you mean:

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Helper II

## Question on variable on measure

Hi,

I am trying to calculate sales amount excluding certain regions, and I have two measures, which seem almost identical to me but somehow one is working but the other one is not.

Can someone please explain why one works but the other one gives wrong result  ?

Version 1(Working version):

SalesWithoutNA =
VAR Table1 = FILTER('FactSales',RELATED('DimCountries'[Region])<>"North America")
VAR Result = CALCULATE(SUM('FactSales'[Sales]),Table1)
RETURN Result

Version 2 (This version gives me wrong results):

M_SalesWithoutNA =
VAR Expression1 = SUM('FactSales'[Sales])
VAR Table1 = FILTER('FactSales',RELATED('DimCountries'[Region])<>"North America")
VAR Result = CALCULATE(Expression1,Table1)
RETURN Result

I cannot figure out why they dont give me the same results.

1 ACCEPTED SOLUTION
Super User

I think this is due to the fact that variables are calculated first and the calculated value becomes a constant and can not be changed with filters anymore.

So in your case, you first calculate the sum of all sales and store that result in the variable Expression1. Afterwards, you apply the filter from Table1 ("North America") to that result. However, applying a filter on a constant does not change the value of your result. So to sum it up, your filter does not kick in.

Does this help? 🙂

 Also happily accepting Kudos 🙂

 Feel free to connect with me on LinkedIn!

 #proudtobeasuperuser

2 REPLIES 2
Helper II

Yes, that does make sense, thanks Tom !

Super User

I think this is due to the fact that variables are calculated first and the calculated value becomes a constant and can not be changed with filters anymore.

So in your case, you first calculate the sum of all sales and store that result in the variable Expression1. Afterwards, you apply the filter from Table1 ("North America") to that result. However, applying a filter on a constant does not change the value of your result. So to sum it up, your filter does not kick in.

Does this help? 🙂

 Also happily accepting Kudos 🙂

 Feel free to connect with me on LinkedIn!

 #proudtobeasuperuser