背景
我有一个包含10,000多个变量的数据集作为列标题,我希望将其减少到所需的数量。我知道如何通过列出包含手动指定字符串的列来选择列的样本,例如" glu"和" pep",列必须包含才能被选中。这是用于选择样本列的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生成一个表格,我称之为"数据"。由于我想根据它们必须包含的多个字符串选择列,因此我创建了一个名为"Outcomes"的字符串的动态列表。我希望我的Power Query在选择要选择的列时使用此字符串列表。
问题
是否可以让我的Power Query在List.Select()或Table.SelectColumns()函数或任何其他函数中使用此动态列表,这将使我的Power Query仅选择包含字符串的列清单?
答案 0 :(得分:0)
使用这一行:
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)))),