使用 Table.TransformColumns() 函数可以在不添加新列的情况下,完成对指定列的条件转换。使用 Power Query 的 “转换” 选项卡中的功能所生成的 M 代码中经常有该函数。Table.TransformColumns() 函数与 List.Transform() 函数有不少共同之处,它只是把转换的对象升级为表格了。Table.TransformColumns() 函数的第一个参数是表,第二个参数是转换操作组成的列表,其他几个参数为可选参数。该函数的语法格式如下:
Table.TransformColumns(table as table, transformOperations as list, optional defaultTransformation as nullable function, optional missingField as nullable number) as table
其中第二个参数 transformOperations 的中文意思是 “转换操作”。对表的列进行转换,除了提供转换操作以外,也必须指定转换对象。针对单列进行转换时,transformOperations 需要包含转换对象及转换操作,所以要用列表表示,比如 {"姓氏", Text.Upper};而针对多列进行转换时,transformOperations 就需要用由列表组成的列表表示,比如 {{"姓氏", Text.Upper}, {"名字", Text.Lower}}。
例如以下表格:

下面通过 Table.TransformColumns() 函数将上表数据中的(1)名字列转换为小写,(2)全名按首字母大写格式转换,(3)并将得分大于或等于 80 的级别设为 “及格”,将得分小于 80 的级别设为 “不及格”。
= Table.TransformColumns(更改的类型, {{"名字", Text.Lower, type text}, {"全名", Text.Proper, type text}, {"得分", each if _ >=80 then "及格" else "不及格"}})
结果如下图所示:

对于 Table.TransformColumns() 函数的大部分转换功能,在功能区中都能找到对应的按钮,学习 Table.TransformColumns() 函数的语法以后,可以更加深刻地理解 Power Query 数据处理的底层方法。在需要的时候结合 Power Query 编辑器功能及 M 函数,可快速提升数据处理能力。表格的批量转换函数还有 Table.TransformColumnNames()、Table.TransformColumnTypes() 函数,前者用于修改列名,后者用于修改列的数据类型,它们的用法比较简单,这里就不赘述。
出了2天差,刚到家没多久,所以今天发的比较晚。
大家明天见了。
夜雨聆风