Forum Discussion
Filter table in Power Query based on two columns
Hello guys,
trying to figure out what I though is an easy task so I can streamline my queries.
I have two colums I want to use to filter
Column 1: File name:
- 2021 Consolidation.xlsm
- 2021 Unconsolidated.xlsm
Column 2: Financial Statement item:
- Sales
- Sales Intercompany
- Cost
- Cost Intercompany
What I want to do is to remove the lines matching following criteria:
- Column 1 text contains "unconsolidated"
AND
- Column 2 contains "Sales Intercompany" or "Cost Intercompany"
I already have a solution to achieve that filtering, via a merch, but that seems too excessive for my goals.
D
4 Replies
- amitchandakSuper User
- TomMartensSuper User
Hey danielboi ,
create a custom column using an if statement in combination with the function Text.Contains (https://docs.microsoft.com/en-us/powerquery-m/text-contains) like so
if Text.Contains( [Column1] , "A") and ( Text.Contains( [Column2] , "yellow") or Text.Contains( [Column2] , "red") ) then "omit" else "keep"Be aware of the brackets.
Then you can use to values to filter the table and remove the column after the filtering.
Hopefully, this provides an idea on how to tackle your challenge.
Regards,
Tom
- TomMartensSuper User
Hey danielboi ,
if you are familiar with M and the Advanced Editor you can use this one:let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUSpKTVGK1YGwK1NzcvLL4dz0otTUPKXYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}}), #"onego" = Table.SelectRows ( #"Changed Type" , (_) => ( Text.Contains( [Column1] , "A") and ( Text.Contains( [Column2] , "yellow") or Text.Contains( [Column2] , "red") ) = false ) ) // #"Added Custom" = Table.AddColumn(#"Changed Type", "condition", each if Text.Contains( [Column1] , "A") and // ( Text.Contains( [Column2] , "yellow") or Text.Contains( [Column2] , "red") // ) then "omit" else "keep") in #"onego"
Regards,
Tom
- LinnilHelper III
I'm a bit late to the party, but I have a different take - it requires a new column but depending on how big your model is, it might be OK.
Create a concatenation of column 1 and 2.This creates strings like:
unconsolidated Sales Intercompany
unconsolidated Cost Intercompany
In the new column, you can filter for those strings, using the usual Power Query column filter function (no actual coding required).
Cheers