PQ:又双叒叕粗错了!什么叫“枚举中用于完成操作的元素过多”?

2021-08-30 16:16:23 浏览数 (1)

小勤:这是什么鬼啊?什么叫“枚举中用于完成操作的元素过多”?

大海:你透视的值列有多个值吧?比如同一个“生产中心”里有多个人。

小勤:嗯,的确是呢。源数据是这样的:

大海:类似这种情况,你用不聚合的方式做透视,就会出现上面的错误。因为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里的(列表)数据引用方式
  • 匿名自定义函数

熟练掌握这些基础知识后,再结合这些日常的案例多练习,很快就能掌握了。

小勤:嗯。这种写法感觉没有太多烧脑的技巧,就是一时不太适应。

大海:慢慢来,不着急。

0 人点赞