Microsoft Excel Power Query:Select 列包含字符串列表中的字符串

Microsoft Excel Power Query: Select columns that contain strings from a string list

背景

我有一个包含 10,000 多个变量的数据集作为列 headers,我想将其减少到所需的数量。我知道如何通过列出包含手动指定字符串的列来 select 列示例,比如 "glu" 和 "pep",这些列必须包含才能被 selected .这是用于 select 示例列的 M 代码:

let
    Source = Excel.CurrentWorkbook(){[Name="data"]}[Content],
    ColumnsToSelect = List.Select(Table.ColumnNames(Source), each Text.Contains(_, "glu") or Text.Contains(_, "pep")),
    SelectColumns = Table.SelectColumns(Source, ColumnsToSelect)    
in
    SelectColumns

此 Power Query 生成一个 table,我称之为 "Data"。因为我想 select 列基于它们必须包含的多个字符串,所以我制作了一个动态的字符串列表,我称之为 "Outcomes"。我希望我的 Power Query 在选择 select.

的列时利用这个字符串列表

问题

是否可以让我的 Power Query 在 List.Select() 或 Table.SelectColumns() 函数或任何其他函数中使用此动态列表,这将使我的 Power Query select 只有包含列表中字符串的列?

与此行一起使用:

let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],

    Source2 = Excel.CurrentWorkbook(){[Name="Outcomes"]}[Content],
    Outcomes = Source2[Outcomes],

    UnpivotedColumns = Table.UnpivotOtherColumns(Source, {}, "ColumnNames", "Filters"),

    FilteredRows = Table.SelectRows(UnpivotedColumns, each List.AnyTrue(List.Transform(Outcomes, (substring) => Text.Contains([Filters], substring)))),

    ColumnNames = List.Sort(List.Distinct(FilteredRows[ColumnNames]),Order.Ascending),
    SelectColumns = Table.SelectColumns(Source,ColumnNames)
in
    SelectColumns

神奇之处在于这一行:

FilteredRows = Table.SelectRows(UnpivotedColumns, each List.AnyTrue(List.Transform(Outcomes, (substring) => Text.Contains([Filters], substring)))),