Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Simplify dax formula and remove errors

Hello I'm new to dax and I have some problems with it syntax. I want to create a new mesure named ""cumulated"  based on an other mesure "AverageBudgetYear".

Actually I have 2 problems, first I need to remove duplicate lines in code and symplify the syntax and second I need to resolve this error message "A function 'MAX' has been used in a True/False expression that is used as a table filter expression. This is not allowed".

This is my syntaxe:

 

 

  • Hey Anonymous ,

     

    the error with the MAX expression is a little annoying. You can save the value of MAX in a variable, that should fix it.

    For the many ifs I would use SWITCH with TRUE in combination instead:

    https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true/

     

    So the formula could look like this:

     

    Cumulated Sum =
    VAR vMaxDate = YEAR(MAX(Abfrage1[fiscaldate]))
    
    VAR vYear_1 = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = 2020))
    VAR vYear_2 = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = 2021))
    -- and so on
    
    RETURN
    SWITCH( TRUE(),
        vMaxDate = 2020, vYear_1,
        vMaxDate = 2021, vYear_2
    -- and so on
    )

     

     

    I don't fully understand your approach. For me it looks like you use the MAX value for the calculate. Then you could just add it dynamically from the variable:

    Cumulated Sum =
    VAR vMaxDate = YEAR(MAX(Abfrage1[fiscaldate]))
    VAR vResult = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = vMaxDate ))
    RETURN
        vResult

     

    If you need any help please let me know.
    If I answered your question I would be happy if you could mark my post as a solution ✔️ and give it a thumbs up 👍
     
    Best regards
    Denis
     

4 Replies

  • selimovd's avatar
    selimovd
    Most Valuable Professional

    Hey Anonymous ,

     

    the error with the MAX expression is a little annoying. You can save the value of MAX in a variable, that should fix it.

    For the many ifs I would use SWITCH with TRUE in combination instead:

    https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true/

     

    So the formula could look like this:

     

    Cumulated Sum =
    VAR vMaxDate = YEAR(MAX(Abfrage1[fiscaldate]))
    
    VAR vYear_1 = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = 2020))
    VAR vYear_2 = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = 2021))
    -- and so on
    
    RETURN
    SWITCH( TRUE(),
        vMaxDate = 2020, vYear_1,
        vMaxDate = 2021, vYear_2
    -- and so on
    )

     

     

    I don't fully understand your approach. For me it looks like you use the MAX value for the calculate. Then you could just add it dynamically from the variable:

    Cumulated Sum =
    VAR vMaxDate = YEAR(MAX(Abfrage1[fiscaldate]))
    VAR vResult = CALCULATE( [AverageBudgetYear], FILTER( ALL(Abfrage1[fiscaldate]), vMaxDate = vMaxDate ))
    RETURN
        vResult

     

    If you need any help please let me know.
    If I answered your question I would be happy if you could mark my post as a solution ✔️ and give it a thumbs up 👍
     
    Best regards
    Denis
     
    • selimovd's avatar
      selimovd
      Most Valuable Professional

      Hey Anonymous ,

       

      did it work with the measure I posted?

      I'm curious if you could solve this issue 🙂

       

      If you need any help please let me know.
      If it worked I would be happy if you could mark my post as a solution ✔️. Like this, the next person with a similar problem knows if that approach is viable.
       
      Best regards
      Denis
       
  • Anonymous's avatar
    Anonymous
    Not applicable

    Hello selimovd, thank you very much for responding  your tricks really help me resolving the issues that I have.

    • selimovd's avatar
      selimovd
      Most Valuable Professional

      Hey Anonymous ,

       

      I'm happy you could solve that 😊

       

      Best regards

      Denis