Power Query 批量操作列函数详解

Table.TransformColumns


Table.TransformColumns(table as table, transformOperations as list, optional defaultTransformation as nullable function, optional missingField as nullable MissingField.Type) as table

  • 第1参数是需要操作的表;

  • 第2参数是需要改变的列及操作(正常情况是由列名和操作函数组成,也可以是空列表);

  • 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数;

  • 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理(0)。


例1:

此函数的必要参数只有2个,所以我们先用最基础的2个参数来进行操作。

如果要把成绩统一减10分的话,那就在第2参数这里使用列名和对应的操作函数即可。

Table.TransformColumns(源, {"成绩", each _-10})

例2

如果是需要进行多个列的操作,可以在第2参数中使用多次对应的写法,并在最外面用符号{}括起来。

如果除了成绩要减去10,还需要在学科后面加上字符“(上)”。

Table.TransformColumns(源,

                      {

                       {"成绩", each _-10},

                       {"学科",each _&"(上)"}

                      })

例3

第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。

在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。

Table.TransformColumns(源,

                        {

                         {"成绩", each _-10},

                         {"学科", each _&"(上)"}

                        },

                        each _&"A"

                     )

例4

第3参数是针对除了第2参数指定的剩余列进行操作,那第4参数就是指定列如果找不到的话,是返回错误还是忽略错误。

如果第2参数的中的学科写错或者定义了其他未在操作表中的列名,则可以通过第4参数来控制返回。

Table.TransformColumns(源,

                        {

                         {"成绩", each _-10},

                         {"班级", each _&"(一)"}

                        },

                        each _&"A",

                        1

                     )

因为指定的列里有 “班级”,但是在原来的表格中不存在,所以会产生错误,但是第4参数有指定1,也就是忽略错误,最终返回的结果如图所示。除了找到的成绩列表外,其余的列数据都在后面添加了个“A”。

如果第4位参数指定的是0,或者省略默认,则会返回错误。

例5

如果是想让所有的列都进行同样的操作,也就是不指定列,使得把所有列都是作为其他列来处理,使用的是第3参数来进行操作的话,此时第2参数可以直接使用空列来表示,也就是不指定列。

Table.TransformColumns(源, {}, each _&"A")

因为使用的文本合并,而成绩是数字格式,所以导致出现错误值。

例6

因为第3参数是针对所以未指定的列来进行操作,如果有些指定列不想操作,只想保留的话,那指定列可以使用each _来进行保留。

Table.TransformColumns(源, {{"成绩", each _-10},{"姓名", each _}}, each _&"A")