M/PowerBI/PowerQuery中的[列]和Table.Column(Table,"column")有什么区别

What is the difference between [column] and Table.Column(Table, "column") in M/PowerBI/PowerQuery

再见!

我对 M/PowerBI/PowerQuery 中 [column] 和 Table.Column(Table, "column") 之间的差异有疑问。


示例Table:
'#____column
1_______a
2_______b
3_______c

期望的结果:
'#____column
1_______TEST
2_______TEST
3_______TEST


所以,我目前有以下代码:

= Table.ReplaceValue(PrevQueryTable, each Table.Column(PrevQueryTable, "column"), 
            "TEST", 
        Replacer.ReplaceValue, {"column"})

这是行不通的。结果:

'#____column
1_______a
2_______b
3_______c


然而这:

= Table.ReplaceValue(PrevQueryTable, each [column], 
            "TEST", 
        Replacer.ReplaceValue, {"column"})

有效。结果:

'#____column
1_______TEST
2_______TEST
3_______TEST


为什么?我怎样才能做某事。喜欢第一个工作吗? (目前正在编写一个将列名用作字符串的函数。)

Table.Column returns 一个 table 列的列表。

[column] returns 该列中的值 当前行

在这种情况下,我发现 Table.TransformColumnsTable.ReplaceValue 更灵活。

如果您使用 GUI 将多个列转换为大写,它将生成如下所示的代码:

= Table.TransformColumns(
    PrevQueryTable,
    {{"Col1", Text.Upper, type text},
     {"Col2", Text.Upper, type text},
     {"Col3", Text.Upper, type text}})

这可以作为我们要如何编写自己的转换的模板。假设我们有一个列名列表 ColumnList(例如来自 Table.ColumnNames)。我们可以通过向每个元素添加转换函数来转换该列表,如下所示:

= Table.TransformColumns(
    PrevQueryTable,
    List.Transform(
        ColumnList,
        each {_, each "TEST", type text}
    )
  )

例如"col1" 变成 {"col1", each "TEST", type text}