Forum Discussion

Woodpecker's avatar
Woodpecker
New Member
4 years ago
Solved

Slicer to filter multiple columns

Hi all,

 

Looking to create a slicer that uses all names in the 'Lead' column from below table. I believe the correct format to follow is from the following video, but after splitting the 'Lead' column by delimeter, there are blank values that create difficulty: https://www.youtube.com/watch?v=UvvS376vYSw.

 

Desired end state is to be able to filter by 'Jane Air' and all prospective clients with her name against them appear.

 

Any help greatly appreciated!

 

Cheers 

 

Prospective ClientRegionLeadStageCurrencyEstimated Revenue Probability (%)Expected close
XXXGermanyJoe BloggsPursuitEUR91060.525-50Q4 2022
YYYGermanyJoe Bloggs, John Doe, Jane AirWinEUR2500050-75Q1 2022
ZZZGermanyJohn Doe, Jane AirLossEUR200000-25Q4 2022
CCCSpainJohn DoeProposalEUR17000075-100Q3 2022
QQQUKJoe Bloggs, John DoePursuitEUR8000025-50Q4 2022
WWWUKJoe Bloggs, John Doe, Jane AirWinEUR15000050-75Q1 2022
QRRFranceJane Air, Joe BloggsLossEUR1400000-25Q4 2022
GGGFranceJane Air, John DoeProposalEUR2500075-100Q3 2022
  • Hi Woodpecker 

     

    If you create a slicer table from the data table removing all columns except the Lead column, then duplicate the Lead column and use split by delimiter 'column to rows' on the Lead column. You will get a table like below that can be linked to your data table and used to filter by all the names.

     

    Also using the Text.Trim function on the Lead column on the slicer table will remove any blank spaces around the names. See M-code below

     

    Slicer Table

    Joe BloggsJoe Bloggs
    Joe BloggsJoe Bloggs, John Doe, Jane Air
    John DoeJoe Bloggs, John Doe, Jane Air
    Jane AirJoe Bloggs, John Doe, Jane Air
    John DoeJohn Doe, Jane Air
    Jane AirJohn Doe, Jane Air
    John DoeJohn Doe
    Joe BloggsJoe Bloggs, John Doe
    John DoeJoe Bloggs, John Doe
    Jane AirJane Air, Joe Bloggs
    Joe BloggsJane Air, Joe Bloggs
    Jane AirJane Air, John Doe
    John DoeJane Air, John Doe

     

    The M-code for slicer table (Replace 'SampleData' with your data table name)

    let
        Source = SampleData,
        #"Removed Other Columns" = Table.SelectColumns(Source,{"Lead"}),
        #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"),
        #"Duplicated Column" = Table.DuplicateColumn(#"Removed Duplicates", "Lead", "Lead link"),
        #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Duplicated Column", {{"Lead", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Lead"),
        #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Lead", type text}}),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"Lead", Text.Trim, type text}})
    in
        #"Trimmed Text"

     

    Hope this helps

     

3 Replies

    • Woodpecker's avatar
      Woodpecker
      New Member

      Hi Mohammed - thanks for your response but this doesn't answer my question.  Split by delimeter makes sense; I'm not sure what the 'colums to rows' achieves given that we have multiple text values across a variable number of rows.

  • Deoljat's avatar
    Deoljat
    Regular Visitor

    Hi Woodpecker 

     

    If you create a slicer table from the data table removing all columns except the Lead column, then duplicate the Lead column and use split by delimiter 'column to rows' on the Lead column. You will get a table like below that can be linked to your data table and used to filter by all the names.

     

    Also using the Text.Trim function on the Lead column on the slicer table will remove any blank spaces around the names. See M-code below

     

    Slicer Table

    Joe BloggsJoe Bloggs
    Joe BloggsJoe Bloggs, John Doe, Jane Air
    John DoeJoe Bloggs, John Doe, Jane Air
    Jane AirJoe Bloggs, John Doe, Jane Air
    John DoeJohn Doe, Jane Air
    Jane AirJohn Doe, Jane Air
    John DoeJohn Doe
    Joe BloggsJoe Bloggs, John Doe
    John DoeJoe Bloggs, John Doe
    Jane AirJane Air, Joe Bloggs
    Joe BloggsJane Air, Joe Bloggs
    Jane AirJane Air, John Doe
    John DoeJane Air, John Doe

     

    The M-code for slicer table (Replace 'SampleData' with your data table name)

    let
        Source = SampleData,
        #"Removed Other Columns" = Table.SelectColumns(Source,{"Lead"}),
        #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"),
        #"Duplicated Column" = Table.DuplicateColumn(#"Removed Duplicates", "Lead", "Lead link"),
        #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Duplicated Column", {{"Lead", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Lead"),
        #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Lead", type text}}),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"Lead", Text.Trim, type text}})
    in
        #"Trimmed Text"

     

    Hope this helps