PQ实战 | Power Query中如何添加多列?

使用PQ的同学都知道,在PQ中有一个函数Table.AddColumn添加一列,但是有时候我们想条件多列,如何做呢?不会要一个一个添加吧?

本文演示附件下载:见文末!

直接来吧!先看看如何条件一列

= Table.AddColumn(data,"合计",each List.Sum(List.Skip(Record.ToList(_))))

如果先同时添加求和,平均值、最高额怎么处理呢?当然一个一个添加肯定没有问题,我们来学习一下批量添加!

List.Transform处理思路

第一种思路先转成行,然后对每行处理,最后再转Table

格式化一下,看起来应该就简单好了!(滑动查看)

= Table.FromRows(List.Transform(Table.ToRows(data),each _ & [a=List.Skip(_),b=List.Transform({List.Sum,List.Average,List.Max},each _(a))][b]),Table.ColumnNames(data)&{"合计","平均值","最大值"})

说一下详细处理思路:

1、把Table使用Table.ToRows按行转成一个List

2、使用List.Transform遍历每一行,把每一行的数据剔除(List.Skip) 产品名称,剩下的都是数值.

3、对处理后的行(a),分别作为List.Sum(求和)、List.Average(求平均)、List.Max(求最大)的参数进行批量处理,这也是一个循环过程,只是这次我们要循环的是上面这三个参数,所以他们作为List.Transform的第一参数,把没放都放进去加工一遍

4、最后使用原本的行 拼接上处理后的三个结果

5、使用Table.FromRows,重新制作成Table,列名的处理,使用Table.ColumnNames获取到原本的列名在拼接上{"合计","平均值","最大值"}即可!

List.Accumulate 处理方法

当然也可以使用List.Accumulate处理,只是List.Accumulate对新手而言有点难,官方的示例是用于累计 结果15

= List.Accumulate({1, 2, 3, 4, 5}, 0, (state, current) => state + current)

有点难度,有兴趣的同学可以自行琢磨,有不懂的地方,留言,小编看到后给大家答疑!

本案例附件下载:链接: https://pan.baidu.com/s/1UjCIKfQqYnkoGTogLAxzUw 提取码: uqsq

(0)

相关推荐