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