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

July 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more

Reply
JoeyF
Frequent Visitor

Nested IF OR Statement when creating a New Custom Column

I am trying to create a new Custom Column which is creating a new Category Name based on the text contained in the CATNAME column. 

Basically I want the Category Name to be "Roads" if the CATNAME contains either "Sign", "Kerb", "Path", or "Road" OR if the CATNAME contains "Drain" then I want it to be "Drainage". If it is none of these then the original CATNAME should be displayed.

I have tried the below but there seems to be an error at then in the 4th line. Have I got the logic incorrect?

 

JoeyF_0-1717021920843.png

Thank you.

 

1 ACCEPTED SOLUTION
kpost
Solution Sage
Solution Sage

Well, I'm much more familiar with DAX than Power Query. 

 

So here's how I'd do it as a calculated column.  But don't let this deter you from trying it your way, just throwing in one viable solution.

 

Custom Column = 
VAR catname = [CATNAME]
RETURN
SWITCH(
        TRUE(),
         CONTAINSSTRING(catname, "SIGN") || CONTAINSSTRING(catname, "KERB") || CONTAINSSTRING(catname, "PATH") || CONTAINSSTRING(catname, "ROAD"), "Roads",

         CONTAINSSTRING(catname, "DRAIN"), "Drainage",
         catname

)

 

Hopefully you can get some help with your column in Power Query, but if not this will work for you.

View solution in original post

2 REPLIES 2
Transform121
Helper I
Helper I

The issue is syntax.

You have more nestings created by open parenthesis than you do by closed. Count your open and closed parenthesis separately (using a stepping method) and you'll see where things are left open.

 

I've put a simple counting image below for parenthesis, but you're currently missing 5 closed parenthesis because of additional inserts. If you resolve this the token literal error should fix itself.

 

Transform121_0-1717025833555.png

 

Try something like this. It will nest all of the first options for roads into 1 group.

 

if (Text.Contains([CATNAME], "SIGN") or Text.Contains([CATNAME], "KERB") or Text.Contains([CATNAME], "PATH") or Text.Contains([CATNAME], "ROAD") then "ROADS") else if Text.Contains([CATNAME], "DRAIN"), "Drainage", else [CATNAME]

 

kpost
Solution Sage
Solution Sage

Well, I'm much more familiar with DAX than Power Query. 

 

So here's how I'd do it as a calculated column.  But don't let this deter you from trying it your way, just throwing in one viable solution.

 

Custom Column = 
VAR catname = [CATNAME]
RETURN
SWITCH(
        TRUE(),
         CONTAINSSTRING(catname, "SIGN") || CONTAINSSTRING(catname, "KERB") || CONTAINSSTRING(catname, "PATH") || CONTAINSSTRING(catname, "ROAD"), "Roads",

         CONTAINSSTRING(catname, "DRAIN"), "Drainage",
         catname

)

 

Hopefully you can get some help with your column in Power Query, but if not this will work for you.

Helpful resources

Announcements
FabCon and SQLCon Barcelona 2026

FabCon & SQLCon – Barcelona 2026

Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.

60 days of Data Days Carousel

Data Days 2026

Join Fabric Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.