如何用变量替换 Power Query 中的列名以过滤行?
How to replace a column name in Power Query by a variable to filter rows?
在使用 Excel Power Query 开发的查询中,当我过滤列表的行时,我想用变量替换 table 列名称。不幸的是,我要么收到错误消息(例如表达式错误:未找到 table 的列 xx),要么过滤后没有剩余行,即使它应该。
在下面的示例中,变量 #"Filter"(= 列名称)设置为列 "B" 并在步骤 #"Filter Rows" 中用于过滤包含“1”的行。但结果是没有显示任何行。
知道是什么原因以及如何解决这个问题吗?也许变量需要有特殊的数据类型?
提前致谢!
Table:
Table to be filtered
代码:
let
#"Filter" = "B",
Source = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", Int64.Type}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{#"Filter", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type1", each Text.Contains(#"Filter", "1"))
in
#"Filtered Rows"
#"Filter"
是值 "B",所以条件总是 returns 假。 Table.SelectRows
的第二个参数采用一个函数,该函数将 table 的当前行作为记录传递。您可以执行以下任一操作以使用变量指定列:
= Table.SelectRows(#"Changed Type", each Text.Contains(Record.Field(_, #"Filter"), "1"))
= Table.SelectRows(#"Changed Type", (x) => Text.Contains(Record.Field(x, #"Filter"), "1"))
在这些情况下,each
和 _
与 (x) =>
和 x
相同。 Record.Field(_, #"Filter")
获取当前行中 #"Filter"
所指列的值。
在使用 Excel Power Query 开发的查询中,当我过滤列表的行时,我想用变量替换 table 列名称。不幸的是,我要么收到错误消息(例如表达式错误:未找到 table 的列 xx),要么过滤后没有剩余行,即使它应该。 在下面的示例中,变量 #"Filter"(= 列名称)设置为列 "B" 并在步骤 #"Filter Rows" 中用于过滤包含“1”的行。但结果是没有显示任何行。 知道是什么原因以及如何解决这个问题吗?也许变量需要有特殊的数据类型?
提前致谢!
Table: Table to be filtered
代码:
let
#"Filter" = "B",
Source = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", Int64.Type}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{#"Filter", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type1", each Text.Contains(#"Filter", "1"))
in
#"Filtered Rows"
#"Filter"
是值 "B",所以条件总是 returns 假。 Table.SelectRows
的第二个参数采用一个函数,该函数将 table 的当前行作为记录传递。您可以执行以下任一操作以使用变量指定列:
= Table.SelectRows(#"Changed Type", each Text.Contains(Record.Field(_, #"Filter"), "1"))
= Table.SelectRows(#"Changed Type", (x) => Text.Contains(Record.Field(x, #"Filter"), "1"))
each
和 _
与 (x) =>
和 x
相同。 Record.Field(_, #"Filter")
获取当前行中 #"Filter"
所指列的值。