Forum Discussion

hideakisuzuki01's avatar
4 years ago
Solved

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.

 

  • Hi hideakisuzuki01 ,

     

    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? 🙂

     

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

2 Replies

  • tackytechtom's avatar
    tackytechtom
    Most Valuable Professional

    Hi hideakisuzuki01 ,

     

    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? 🙂

     

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/