Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Agustina
Frequent Visitor

Why SWITCH does not work as expected replace for my nested IFs?

 Hello colleagues,

 

I am working creating a calculated column to get different due dates based on each item priority and status.

I used to have nested IFs and worked perfectly fine, but I would like to be more efficient and use SWITCH instead, although I cannot get it to fully work - most of the rows I get are blanks.

 

Here are both exppressions:

 

DueDate_OldButWorking =
IF(
NOT(ISBLANK('2021 Cases'[Submission Date])) && RELATED(AUX_DetailedStatus[Level]) > 4,
IF(
RELATED(AUX_Priority[Level]) = 3,
'2021 Cases'[Submission Date] + 21,
IF(
RELATED(AUX_Priority[Level]) = 1 || RELATED(AUX_DetailedStatus[Level]) = 2,
'2021 Cases'[Submission Date] + 5,
BLANK()
)
)
)
 
DueDate_New =
SWITCH(
TRUE(),
NOT(ISBLANK('2021 Cases'[Submission Date])) && RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) = 3, DATEADD('2021 Cases'[Submission Date], 21, DAY),
NOT(ISBLANK('2021 Cases'[Submission Date])) && RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) = 2, DATEADD('2021 Cases'[Submission Date], 5,DAY),
NOT(ISBLANK('2021 Cases'[Submission Date])) && RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) = 1, DATEADD('2021 Cases'[Submission Date], 5,DAY),
BLANK()
)
 
Can you identify what is that I am not doing correctly?
Many thanks in advance!
1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@Agustina , Try like

 

DueDate_New =
if(NOT(ISBLANK('2021 Cases'[Submission Date])) ,
SWITCH(
TRUE(),
RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) = 3, DATEADD('2021 Cases'[Submission Date], 21, DAY),
RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) in {1,2}, DATEADD('2021 Cases'[Submission Date], 5,DAY),
BLANK()
), blank())

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

@Agustina 

 

Just a quickie: The fact that you get 2 different results from IF and SWITCH only mean that your SWITCH is NOT logically equivalent to your IF. You just make a logical mistake when you translate into SWITCH.

amitchandak
Super User
Super User

@Agustina , Try like

 

DueDate_New =
if(NOT(ISBLANK('2021 Cases'[Submission Date])) ,
SWITCH(
TRUE(),
RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) = 3, DATEADD('2021 Cases'[Submission Date], 21, DAY),
RELATED(AUX_DetailedStatus[Level]) > 4 && RELATED(AUX_Priority[Level]) in {1,2}, DATEADD('2021 Cases'[Submission Date], 5,DAY),
BLANK()
), blank())

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors