Forum Discussion
if DAX formula error
Hi Experts
Cannot see the error in my if formula.
6 Replies
- mahoneypatMicrosoft Employee
Did you consider writing this as a SWITCH(TRUE(),... expression instead of nested IF()s? Check out this post.
https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true/
Not sure if you want to rewrite this one but it will make the next one easier.
Regards
Pat
- AnonymousNot applicable
hi Pat
not sure that is going to work its a calculated column in a table, my faut forgot to mention that.
- mahoneypatMicrosoft Employee
Switch(true() works in calculated columns too. Here is what it your expression would look like with that approach:
_Status = SWITCH(TRUE(),ScheduleTask[status]="Complete", "Complete",ScheduleTask[status]="Cancelled","Cancel",AND(ScheduleTask[status]="Active",ScheduleTask[primaryAuthor]=""),"Unassigned",AND(ScheduleTask[status]="Active",ScheduleTask[primaryAuthor]<>""),"Assigned",AND(ScheduleTask[status]="Active",ScheduleTask[LifecycleStatusMatch]=""),"inProgress",ScheduleTask[LifecycleStatusMatch])Easier to read at least. Does that work?Regards,Pat
- amitchandakSuper User
Anonymous, I think you should like
_Status = IF(ScheduleTask[status]="Complete", "Complete",IF(ScheduleTask[status]="Cancelled","Cancel",
IF( (ScheduleTask[status]="Active",ScheduleTask[primaryAuthor]=""),"Unassigned",
IF( (ScheduleTask[status]="Active",ScheduleTask[primaryAuthor]<>""),"Assigned",
IF( ScheduleTask[status]="Active",ScheduleTask[LifecycleStatusMatch]=""),"inProgress",ScheduleTask[LifecycleStatusMatch]))))I doubt use of AND
- AnonymousNot applicable
Hi Amit
its giving me errors with out the and....
- az38Community Champion
Hi Anonymous
highky recommend to use SWITCH() as mentioned mahoneypat
_Status = SWITCH(TRUE(), ScheduleTask[status]="Complete", "Complete", ScheduleTask[status]="Cancelled","Cancel", ScheduleTask[status]="Active" && ScheduleTask[primaryAuthor]="", "Unassigned", ScheduleTask[status]="Active" && ScheduleTask[primaryAuthor]<>"", "Assigned", ScheduleTask[status]="Active" && ScheduleTask[LifecycleStatusMatch]="", "inProgress", ScheduleTask[LifecycleStatusMatch] )