Forum Discussion

JK-1's avatar
JK-1
Helper II
11 months ago
Solved

DAX switch but using containsstring

Is there a way to have CONTAINSSTRING in the below instead, as using IN as part of the VAR _Name requires an exact, and I have some examples elsewhere where it would be easier to use containsstring. I've tried a few different IF CONTAINSSTRING in places, and substituted TRUE but can't get it to work

 

Result = VAR _Name = 'Table1'[Name]
RETURN
SWITCH(
TRUE(),
_Name IN {"South"},
"30",
_Name IN {"North"},
"28",
_Name IN {"East"},
"22",
_Name IN {"West"},
"20",
""
)

 

thanks in advance

  • Yes — replace IN with CONTAINSSTRING inside SWITCH(TRUE())

     

    Result =
    VAR _Name = 'Table1'[Name]
    RETURN
    SWITCH(
    TRUE(),
    CONTAINSSTRING(_Name, "South"), "30",
    CONTAINSSTRING(_Name, "North"), "28",
    CONTAINSSTRING(_Name, "East"), "22",
    CONTAINSSTRING(_Name, "West"), "20",
    ""
    )

2 Replies

  • Shahid12523's avatar
    Shahid12523
    Community Champion

    Yes — replace IN with CONTAINSSTRING inside SWITCH(TRUE())

     

    Result =
    VAR _Name = 'Table1'[Name]
    RETURN
    SWITCH(
    TRUE(),
    CONTAINSSTRING(_Name, "South"), "30",
    CONTAINSSTRING(_Name, "North"), "28",
    CONTAINSSTRING(_Name, "East"), "22",
    CONTAINSSTRING(_Name, "West"), "20",
    ""
    )

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi JK-1 ,

    Did you get a chance to try the Shahid12523  suggestion with CONTAINSSTRING inside SWITCH(TRUE())? It should work as expected for example, "South Region" would correctly return 30. Just note that if a name contains more than one of the keywords (like "NorthEast"), the formula will stop at the first match it finds, so only "North" would be applied in that case. Otherwise, the approach should give you the results you’re looking for.

    Regards,
    Akhil.