Forum Discussion

TimAUpp's avatar
TimAUpp
New Member
3 years ago
Solved

Filtering Column A with a text value from column B

Hi!  I'm very new to power query and I am having some issues with dynamic values!   Context: I have a Word Document (converted to PDF) that contains several tables. I want to bring a specific...
  • BA_Pete's avatar
    BA_Pete
    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