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
Mrmr_Optimistic
Advocate I
Advocate I

Filtering text by n values

Hi,

 

I have a column of that I need to filter by a set values contained in a 2nd table.

 

The closest thing I could find is the following, using List.Contains or List.ConstainsAny:

https://community.powerbi.com/t5/Desktop/Filter-using-imported-list/m-p/155804#M67461

 

However, this approach only gives me exact matchs.

 

Example:

List.Constains({{"wine"}}, {{"wine"}})    returns true

List.Contains({"a wine from italy"}}, {{"wine}})   returns false

 

Text.Contains goes beyond exact matches, but there is no Text.ContainsAny to text for a list of values (only 1).

 

Is there an easy way to use Text.Contains("string to evaluate", "string to look for")...
With the goals of:

  1. Filtering using a dynamic list of filterValues
  2. Filtering if it contains, and not just exact matches.

?

 

Thanks!

1 ACCEPTED SOLUTION
v-sihou-msft
Microsoft Employee
Microsoft Employee

@Mrmr_Optimistic

 

To search multiple values in a string, you need to custom a function like:

 

Text.ContainsAny = (string as text, list as list) as logical =>
        List.AnyTrue(List.Transform(list, (substring) => Text.Contains(string, substring)))

Capture.PNG

 

 

See a similar thread below:

 

https://stackoverflow.com/questions/35316657/how-to-search-multiple-strings-in-a-string/35324537

 

Regards,

View solution in original post

2 REPLIES 2
v-sihou-msft
Microsoft Employee
Microsoft Employee

@Mrmr_Optimistic

 

To search multiple values in a string, you need to custom a function like:

 

Text.ContainsAny = (string as text, list as list) as logical =>
        List.AnyTrue(List.Transform(list, (substring) => Text.Contains(string, substring)))

Capture.PNG

 

 

See a similar thread below:

 

https://stackoverflow.com/questions/35316657/how-to-search-multiple-strings-in-a-string/35324537

 

Regards,

Thanks, it works great on a 400 rows dataset I tried.

 

Hopefully, I can optimize my filters prior to launching the function, because it currently doesn't work on a million+ rows dataset I'm targeting.

 

Which I find odd, since I only tested for 2 keywords, which I would have expected to take a similar amount of time to when using:

each Text.Contains([Column 1], "Keyword 1") or Text.Contains([Column 1], "Keyword 2")

 

The code is at risk of leaving residual errors if one of the text value is null, so I added a "try" when filtering.

 

Text.ContainsAny = (string as text, list as list) as logical =>
        List.AnyTrue(List.Transform(list, (substring) => Text.Contains(string, substring))),

#"Filtered Rows" = Table.SelectRows(#"lowercased dataset", each try Text.ContainsAny([Nom du produit], Keywords) otherwise false)

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 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.

Top Solution Authors