Forum Discussion
Filtering Column A with a text value from column B
- 3 years ago
Ok, cool.
I don't think we need a conditional column. The following query turns this:
...into this:
In Power Query, create a new blank query, open Advanced Editor from the Home tab, then paste all of this over the default code so you can see each step in action:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCklMykk1MDBU0lFSitVB4Ts6OaMLubi6IQsZoekC8SMiowgpQeYbA/nuHp7oQkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Id = _t, Data.Column2 = _t]), repBlankNull = Table.ReplaceValue(Source,"",null,Replacer.ReplaceValue,{"Data.Column2"}), groupIdAllRows = Table.Group(repBlankNull, {"Id"}, {{"data", each _, type table [Id=nullable text, Data.Column2=nullable text]}}), filterTargetTable = Table.SelectRows(groupIdAllRows, each List.Contains([data][Data.Column2], "XYZ")), expandDataCol = Table.ExpandTableColumn(filterTargetTable, "data", {"Data.Column2"}, {"Data.Column2"}) in expandDataCol--Summary--
repBlankNull - You can ignore this step, it just swaps blank values for nulls.
groupIdAllRows - Group the table in [Id], but use the All Rows aggregator to keep all the other rows in nested tables.
filterTargetTable - Evaluates the [Data.Column2] column in each nested table to see if it contains "XYZ", and keeps the [Id] row if any of them do.
expandDataCol - Just expand back out any of the nested columns that you need.
Pete
Hi BA_Pete !
That works, but right now my table of interest is "Table002". I want to avoid the scenario where the PDF is updated and another table gets added before Table002 so current Table002 --> becomes Table003. Then I'd have to alter the Power Query and that's what I am trying to avoid!
If any more clarification is needed please let me know!
Kind regards
This is what my table looks like for further clarification!
- BA_Pete3 years agoSuper User
I'm struggling to follow. My suggestion just filtered your table on [Data.Column2] = "XYZ", which was in logical consistency to your original query.
In the absence of any further information, I assumed that Table002[Data.Column2] = "XYZ" was unique, and remained true even if the table is updated to Table003 (to become Table003[Data.Column2] = "XYZ" and is still unique).
What other information is there available to identify the exact row that you want, besides [Data.Column2]?
Are you actually asking for the file name to be brought into the results table to be matched against?
*EDIT* -------------------------------
Hold on, I think I might get what you're on about here.
Do you want to identify the the Table[Id] that has [Data.Column2] = "XYZ", then filter the query for ALL rows that contain that Table[Id]?
---------------------------------------
Pete
- TimAUpp3 years agoNew Member
Thanks for your persistence in trying to help when I am not being very clear!
What you mention in your edit is what I am trying to achieve, the Added Conditional Column gives me the Table[Id] I want to filter the [Id] column by.
- BA_Pete3 years agoSuper User
Ok, cool.
I don't think we need a conditional column. The following query turns this:
...into this:
In Power Query, create a new blank query, open Advanced Editor from the Home tab, then paste all of this over the default code so you can see each step in action:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCklMykk1MDBU0lFSitVB4Ts6OaMLubi6IQsZoekC8SMiowgpQeYbA/nuHp7oQkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Id = _t, Data.Column2 = _t]), repBlankNull = Table.ReplaceValue(Source,"",null,Replacer.ReplaceValue,{"Data.Column2"}), groupIdAllRows = Table.Group(repBlankNull, {"Id"}, {{"data", each _, type table [Id=nullable text, Data.Column2=nullable text]}}), filterTargetTable = Table.SelectRows(groupIdAllRows, each List.Contains([data][Data.Column2], "XYZ")), expandDataCol = Table.ExpandTableColumn(filterTargetTable, "data", {"Data.Column2"}, {"Data.Column2"}) in expandDataCol--Summary--
repBlankNull - You can ignore this step, it just swaps blank values for nulls.
groupIdAllRows - Group the table in [Id], but use the All Rows aggregator to keep all the other rows in nested tables.
filterTargetTable - Evaluates the [Data.Column2] column in each nested table to see if it contains "XYZ", and keeps the [Id] row if any of them do.
expandDataCol - Just expand back out any of the nested columns that you need.
Pete