Forum Discussion

Jayshamone's avatar
Jayshamone
Helper I
5 years ago
Solved

DAX Measure Reference Performance

Hello,

I understand that using variables much more efficient than definining calculations multiple times within one measure. 
Calculating a ratio however, creates another performance question, I cannot find an answer to. The formula would be something like this (with a and b being measures that are already defined elsewhere):

   c:= IF(a && b; DIVIDE(ab) - 1; BLANK())


Should I define a and b as variables within c?

Or are a and considered as constant values within c after the first calculation which would make the measure reference more efficent?

 

Thank you

Justus

  • Jayshamone , something like this should be better

     

    Measure =
    Var _a =a
    Var _b = b
    return
    if(isblank(_a) ||isblank(_b) ,DIVIDE(a-b; b) , blank)

4 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    Jayshamone VAR's are constants, they cannot be recalculated. So yes, you should define a and b as VAR's and use those var's in your final calculation.

    • Jayshamone's avatar
      Jayshamone
      Helper I

      Thank you, Greg_Deckler for your quick response.

      So a and b would indeed be recalcualted in c?
      This would mean that if I make a change to a, I would need to make the same change to var a in c making it harder to maintain.
       

      • Greg_Deckler's avatar
        Greg_Deckler
        Community Champion

        Jayshamone I'm not sure what you are saying by recalculate. VAR's do not recalculate:

         

        Measure =
          VAR __a = [a]
          VAR __b = [b]
        RETURN
          IF(ISBLANK(__a) || ISBLANK(__b),BLANK(),DIVIDE(__a, __b,BLANK()) - 1)

         

  • Jayshamone , something like this should be better

     

    Measure =
    Var _a =a
    Var _b = b
    return
    if(isblank(_a) ||isblank(_b) ,DIVIDE(a-b; b) , blank)