小勤:这是什么鬼啊?什么叫“枚举中用于完成操作的元素过多”?
大海:你透视的值列有多个值吧?比如同一个“生产中心”里有多个人。
小勤:嗯,的确是呢。源数据是这样的:
大海:类似这种情况,你用不聚合的方式做透视,就会出现上面的错误。因为PQ对你的数据进行遍历(枚举)并透视或分组后,不知道该对同一项下的多个不同的内容(元素)做什么操作了。
小勤:原来是这个意思。那如果我想把这些内容用顿号连接合并在一起,该怎么办?
大海:那你可以加上透视的第5个参数(如合并文本的函数Text.Combine)进行处理,如下图所示:
小勤:啊。也就是说可以直接通过不同的函数来实现不同的需要了。
大海:对的。甚至还可以通过多个函数的组合,实现复杂的处理。比如我们还可以对其中的内容加上序号再合并,第5个参数改为如下:
代码语言:javascript复制= Table.Pivot(删除的列, List.Distinct(删除的列[部门]), "部门", "姓名",
(x)=>Text.Combine(
List.Transform(
{1..List.Count(x)},
(y)=>Text.From(y)&"."&x{y-1}
),"、"
)
)
小勤:这个太牛掰了。通过List.Transform将那多个元素前加上序号,然后再合并!
大海:其实类似这种应用还有很多,关键还是把基础的几个内容掌握好,比如这里面包括了下面几个重要的知识点(点链接直接看):
- List.Transform函数
- PQ里的(列表)数据引用方式
- 匿名自定义函数
熟练掌握这些基础知识后,再结合这些日常的案例多练习,很快就能掌握了。
小勤:嗯。这种写法感觉没有太多烧脑的技巧,就是一时不太适应。
大海:慢慢来,不着急。