Forum Discussion
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 vResultIf 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 regardsDenisBlog: WhatTheFact.biFollow me: twitter.com/DenSelimovic
4 Replies
- selimovdMost 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 vResultIf 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 regardsDenisBlog: WhatTheFact.biFollow me: twitter.com/DenSelimovic- selimovdMost 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 regardsDenisBlog: WhatTheFact.biFollow me: twitter.com/DenSelimovic
- AnonymousNot applicable
Hello selimovd, thank you very much for responding your tricks really help me resolving the issues that I have.
- selimovdMost Valuable Professional
Hey Anonymous ,
I'm happy you could solve that 😊
Best regards
Denis