community
cancel
Showing results for 
Search instead for 
Did you mean: 

Alteryx designer Discussions

Find answers, ask questions, and share expertise about Alteryx Designer.
Upgrade Alteryx Designer in 10 Steps

Debating whether or not to upgrade to the latest version of Alteryx Designer?

LEARN MORE
SOLVED

IF contains' formula

Highlighted
Atom

Hello, Just started using Alteryx this week and I have read through some of the suggestions on how to create the "if contains" formula.  I'm not sure if I am missing something but it keeps returning a "null" value.  My assignment column has several different grade types  which I need to group in into one grade.  What I am I trying to achieve is if the assignment column says "MKH" or "SHB" etc. then I want my expression to return "SMA" in the output column.

 

below is how I wrote it out.  I maybe complicating it but if any one has any suggestions that would be great.

 

IF Contains ([Assignment], "HSH") THEN "SMA"
ELSEIF Contains([Assignment], "MKH") THEN "SMA"
ELSEIF Contains([Assignment], "SHB") THEN "SMA"
ELSEIF Contains([Assignment], "SCS") THEN "SMA" 
ELSEIF Contains([Assignment], "SYB") THEN "SMA"
ELSEIF Contains([Assignment], "PXB") THEN "SMA"
ELSE Null()
ENDIF

Asteroid

since you are not using case sensitive option , ensure the text matches exactly.

Alteryx Certified Partner

Give this a try:

 

IF Contains([Assignment],"HSH")==-1 THEN "SMA"
ELSEIF Contains([Assignment],"MKH")==-1 THEN "SMA"
ELSEIF Contains([Assignment],"SHB")==-1 THEN "SMA"
ELSEIF Contains([Assignment],"SCS")==-1 THEN "SMA" 
ELSEIF Contains([Assignment],"SYB")==-1 THEN "SMA"
ELSEIF Contains([Assignment],"PXB")==-1 THEN "SMA"
ELSE Null()
ENDIF

 

A 'true' condition of the Contains( function will return the value 'true' if the field is Boolean, and '-1' in other situations.

 

EDIT: @Avinash_K had a great suggestion. Here's the updated version:

 

IF Contains(Uppercase([Assignment]),"HSH")==-1 THEN "SMA"
ELSEIF Contains(Uppercase([Assignment]),"MKH")==-1 THEN "SMA"
ELSEIF Contains(Uppercase([Assignment]),"SHB")==-1 THEN "SMA"
ELSEIF Contains(Uppercase([Assignment]),"SCS")==-1 THEN "SMA" 
ELSEIF Contains(Uppercase([Assignment]),"SYB")==-1 THEN "SMA"
ELSEIF Contains(Uppercase([Assignment]),"PXB")==-1 THEN "SMA"
ELSE Null()
ENDIF

 

Another option if you only want to specify the true output ("SMA") once:

 

IF (Contains(Uppercase([Assignment]),"HSH")==-1
OR Contains(Uppercase([Assignment]),"MKH")==-1
OR Contains(Uppercase([Assignment]),"SHB")==-1
OR Contains(Uppercase([Assignment]),"SCS")==-1
OR Contains(Uppercase([Assignment]),"SYB")==-1
OR Contains(Uppercase([Assignment]),"PXB")==-1) THEN "SMA"
ELSE Null()
ENDIF

Quasar

Hi @Akullar 

 

 

I would suggest using a Text Input (or Excel Input) to store all the words you would like to match in a column and then use a Find and Replace tool. This method is easier to maintain and more scalable. For example, if you would like to add more words to search for and/or new Groups other than "SMA", all you need to do is to update the Text Input rather than rewriting the long formula in your Formula tool. 

Capture.PNG

Atom

hey @Jasperich

 

I ended up using your method for some reason the suggestions above still returned null values, when I have more time I'll dig into it deeper and see why.

 

Thanks for the help everyone!

Quasar

Hi @Akullar 

 

The method above will return a null when no matching word is found. Would you like it to return some text if no match word is found? if this is the case, you will need to add a formula tool after the find and replace tool.

 

Jasper

Labels