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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Knoble
Frequent Visitor

Switch formula with blank and multiple conditions

Hello,

 

I have a formula I am trying to clean up and it has me stumped. The original formula is:

 

Reason Codes =

IF('Version'[This vs That] = "That",
IF('Version'[Reason]= "0","No Exception",
IF('Version'[Reason]= BLANK(),"No Exception",
IF('Version'[Reason]="1","Error",
IF('Version'[Reason] = "2","Good",
IF('Version'[Reason]= "3","Other",


)))))

 

I have created the following switch formula:

 

Reason Code = 
 
SWITCH (
 
TRUE (),
'Version'[Reason] IN { 0 }, "No Exception",
'Version'[Reason] IN { 1, 01 }, "Error",
'Version'[Reason] IN { 2, 02 }, "Good",
'Version'[Reason] IN { 3, 03 }, "Other",
)
But I'm hitting walls on adding in blanks & taking that first If formula into the equation.
 
Table example:
Knoble_0-1723237819554.png

 

Thank you in advance!

 
1 ACCEPTED SOLUTION

Like this? (Change the order as needed.)

Reason Code =
SWITCH (
    TRUE (),
    ISBLANK ( 'Version'[Reason] ), "No Exception",
    'Version'[This vs That] <> "That", BLANK (),
    'Version'[Reason] IN { 0 }, "No Exception",
    'Version'[Reason] IN { 1, 75 }, "Error",
    'Version'[Reason] IN { 2, 51 }, "Good",
    'Version'[Reason] IN { 3, 100 }, "Other"
)

 

View solution in original post

6 REPLIES 6
AlexisOlson
Super User
Super User

You can do it in one big SWITCH

Reason Codes = 
SWITCH (
    TRUE(),
    'Version'[This vs That] = "That" && 'Version'[Reason] = "0", "No Exception",
    'Version'[This vs That] = "That" && 'Version'[Reason] = BLANK(), "No Exception",
    'Version'[This vs That] = "That" && 'Version'[Reason] = "1", "Error",
    'Version'[This vs That] = "That" && 'Version'[Reason] = "2", "Good",
    'Version'[This vs That] = "That" && 'Version'[Reason] = "3", "Other"
)

 

Or only apply the switch to the Reason part:

Reason Codes =
IF (
    Version[This vs That] = "That",
    SWITCH (
        Version[Reason],
        BLANK (), "No Exception",
        "0", "No Exception",
        "1", "Error",
        "2", "Good",
        "3", "Other"
    )
)

OK, but as the data set gets larger, it will be become just as large as the old dax formula. I was hoping to have something to tighten up the code. 

Ex:

 

Reason Code = 
 
SWITCH (
 
TRUE (),
'Version'[Reason] IN { 0 }, "No Exception",
'Version'[Reason] IN { 1, 75 }, "Error",
'Version'[Reason] IN { 2, 51 }, "Good",
'Version'[Reason] IN { 3, 100 }, "Other",
)

 

Knoble_1-1723240063752.png

 

 

Using IN works fine. How about this?

 

Reason Code =
SWITCH (
    TRUE (),
    'Version'[This vs That] <> "That", BLANK (),
    'Version'[Reason] IN { 0 }, "No Exception",
    'Version'[Reason] IN { 1, 75 }, "Error",
    'Version'[Reason] IN { 2, 51 }, "Good",
    'Version'[Reason] IN { 3, 100 }, "Other"
)

Is there a way to make blank a no exception because as shown in the example (and the larger actual dataset) there are quite a few blanks (infuriating but here we are)?

Like this? (Change the order as needed.)

Reason Code =
SWITCH (
    TRUE (),
    ISBLANK ( 'Version'[Reason] ), "No Exception",
    'Version'[This vs That] <> "That", BLANK (),
    'Version'[Reason] IN { 0 }, "No Exception",
    'Version'[Reason] IN { 1, 75 }, "Error",
    'Version'[Reason] IN { 2, 51 }, "Good",
    'Version'[Reason] IN { 3, 100 }, "Other"
)

 

Works great! Thank you!

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.