留言赠书第1波 | 以“去掉重复项再合并”为例,探讨PQ问题的解决思路是怎么形成的!

最近很多朋友再学习了Power Query的基础操作方法及函数之后,遇到了一些进阶过程中常见的瓶颈:看着书或视频觉得都很简单,但自己一动手就完全没有思路了。
对于这一点,的确是学习PQ过程中比较容易遇到情况,而这又恰恰是通过文章很难写清楚也特别难系统化地讲解的内容——通过视频讲解相对容易一些,但视频也不便于翻查和复习(当然,最好是视频加笔记)。
为此,后期我将尽可能将更多解决问题的思路揉入文章或视频中,供大家参考。
以下,先通过如下问题来探讨一下操作方法和综合函数应用之间的关系和思路,即——将公众号中的内容分组合并,但是要求分组合并的时候要去掉其中的重复值:
- 操作法 -

首先,这个问题通过操作的方法也很容易解决,虽然,本文的重点不在于操作解法本身,但是,操作解法能够很好地体现问题解决的思路,而大多数通过综合函数求解的问题,在总体思路上是和操作的方法一致的。所以,对于Power Query的问题,不是一开始就首先去想要用什么函数,而更应该去想,要怎么操作才能得到想要的结果。
Step 01:既然要删除重复的内容,显然要先把内容拆出来,所以,先对公众号的内容按分隔符(顿号)拆分到行,如下图所示:
Step 02:拆分之后,就可以删除重复项了(注意选中用于判断重复的所有列,这里是姓名和公众号两列),如下图所示:
Step 03:删除了重复项,就可以分组合并了,如下图所示:
Step 04:修改生成的Table.Group函数中所用到的求和(List.Sum)为文本合并(Text.Combine),得到文本合并结果,如下图所示:
- 综合函数法 -

如前面所讲,综合函数解法的思路,在大多数情况下与操作法类似,主要的差异在于,综合函数解法往往是逆向的,因为越处于外层的函数,就最后执行
Step 01:回到这个问题,因为最终在于分组合并,所以,分组是最后的步骤,但从写函数的角度,是处于最外层的,我们可以直接先生成(当然,如果你对函数特别熟悉,可以直接手写),然后再去调整其内部的参数,如下图所示:
Step 02:同样的,修改其中的参数。因为最终是要合并,所以仍然将求和函数修改为合并文本函数,如下图所示:
Step 03:这个时候,显然其中的内容没有去重复,而是将原来的多行内容直接合并到了一起(注意原来各行的内容也没有拆分开),所以,我们可以将合并后的内容再拆分(Text.Split)然后去重(List.Distinct)然后再合并(Text.Combine):
从里往外一层层地写,而且,每加多一层函数的时候,你都可以观察得到的结果,如下图(外加一层Text.Split时)所示:
对于其他继续套外层函数的情况,自己一定要多动手试一下,反复体会。我相信,随着类似的问题,练多了,思考多了,很多思路就自然而然地形成了。
(0)

相关推荐