Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers!
Enter the sweepstakes now!Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.
Hello,
I have a column from a table that I need to filter. It is a txt column and I only need to keep the values if contained in a specified list ({"Jan","Feb","Mar"...})
How can I do it in an efficient way?
Thanks! 🙂
Kind regards
Valeria
Solved! Go to Solution.
Quick response. You are looking for a text search , not a direct match from the items in a list.
This will return a true/false
Table.AddColumn(#"Changed Type", "Is a Month Contains",
(x) => List.AnyTrue(List.Transform(ListMonth, each Text.Contains(x[Attribute], _))))
Quick response. You are looking for a text search , not a direct match from the items in a list.
This will return a true/false
Table.AddColumn(#"Changed Type", "Is a Month Contains",
(x) => List.AnyTrue(List.Transform(ListMonth, each Text.Contains(x[Attribute], _))))
Clear thanks! So I need to go through adding a column first, and then filter that column for a true condition. Thanks!
Post some sample data please because the code is accurate.
Hello, here it is a sample query:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8krMU3DLL0pNTiwuUdJRMlSK1YlWCshJzANyjIzBPLfUJGQlJmDBpJxEIAJyTcFc38QiZDVmYEHHAhRBS4jhzvk5pbl5xsZAEWOgulgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Attribute = _t, Value = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute", type text}, {"Value", Int64.Type}}),
ListMonths = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},
Filtering= Table.SelectRows( #"Changed Type" , each List.Contains(ListMonths,[Attribute]))
in
Filtering
with the last step giving me the blank rows.
The expected result is to have only rows containing months abbreviations in [Attribute] left after filtering...
Hello, @ValeriaBreve List.Contains gives you true only when your [Attribute] equals to one of the list items. Unfortunately PQ does not have a function like Text.ContainsAny. But you can create one yourself! Look at this code where Text.ContainsAny is a function that gives you true whenever any list item is found in your string.
Another alternative would be to split your text by delimiter(s) and use List.ContainsAny function.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8krMU3DLL0pNTiwuUdJRMlSK1YlWCshJzANyjIzBPLfUJGQlJmDBpJxEIAJyTcFc38QiZDVmYEHHAhRBS4jhzvk5pbl5xsZAEWOgulgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Attribute = _t, Value = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute", type text}, {"Value", Int64.Type}}),
ListMonths = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},
Text.ContainsAny = (string as text, lookup_list as list) =>
List.AnyTrue(
List.Transform(
lookup_list,
each Text.Contains(string, _)
)
),
Filtering = Table.SelectRows( #"Changed Type" , each Text.ContainsAny([Attribute], ListMonths))
// Filtering= Table.SelectRows( #"Changed Type" , each List.Contains(ListMonths,[Attribute]))
in
Filtering
Use the dropdown in the column header to create a filter. Select text filters->Equals. Then put in a dummy value.
It doesn't matter what, we just want the code to be generated so we can edit it. It will generate a Table.SelectRows line.
Then, in the formula bar replace the section of code after the 'each' with
List.Contains({"Jan","Feb","Mar"}, [theNameofTheColumn])
Get the brackets right and that should work.
@HotChilli Hello, no unfortunately it does not work... I had tried it... I get an empty table back when the values of the list are definitely contained in the column
This is my code:
= Table.SelectRows(Custom1, each List.Contains(ListMonths,[Attribute]))
where ListMonth is the list in question.
When I put this in a new column the result is indeed "false" for every row...
Thanks
Kind regards
Valeria
Check out the May 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.