前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >四种分组求和方法,操作简单效率又高的竟然是这个!| Power Query实战

四种分组求和方法,操作简单效率又高的竟然是这个!| Power Query实战

作者头像
大海Power
发布2022-04-11 18:55:07
3.9K0
发布2022-04-11 18:55:07
举报
文章被收录于专栏:用户8950297的专栏

这个问题很常见,解决起来也不难,即按“型号+序号”进行分组,对后面各“日期”列求和:

这个问题的方法很多,当数据量不大的时候,各种方法在效率上不会有多大的差异,但是,如果数据量很大,可能就会体现出来较大的差别。

以下随机生成一个近19万行、经分组后仍然超过18万行的数据,通过4种常见的方法做操作和效率对比,供大家参考。

- 1 -

直接分组法

直接分组法很简单,就是直接选中“型号”和“序号”列,然后“分组”,在分组里通过多次“添加聚合”,完成对每个日期列的求和:

这种方法从理解上来说最简单,而且,经测试,也是运行效率最高的!但是,这个方法在处理这个问题上并不好,因为需要对每一列手工添加聚合,不仅繁琐,而且无法适应后续再增加列的情况。

- 2 -

直接分组扩展聚合法

直接分组扩展聚合法,是在分组的基础上,对分组结果表进行展开,并在展开的过程中进行聚合的方法。具体操作方法如下:

Step-01 选定“型号”和“序号”,分组,操作中选择“所有行”,即分组取得各组项下的明细内容:

Step-02 展开分组得到的表列,并选择“聚合”,勾选除分组用的“型号”、“序号”等列的聚合内容,单击确定,即可得到最终结果:

这种方法操作也不复杂,实际是利用了表展开时的“聚合”功能,背后调用了Table.AggregateTableColumn函数。

关于这个函数,我曾经在以前的文章《合并查询,一个严重的效率问题以及简单的解决办法 | PQ优化实战》里提到过,效率比较低,尽量避免使用。在这个例子里,最后测试的结果也是,这种方式的效率是最低的。

- 3 -

逆透视分组再透视法

逆透视分组再透视,应该是这类问题可能采用的最常规做法。因为每个日期作为一列的数据,从数据建模的角度来说,一般建议转换为每一行(逆透视),后续也没有必要进行汇总后横着放。但这个问题既然都在Power Query里处理,那么,逆透视后,可以对“型号”、“序号”及“日期(属性)”三列进行分组求和,然后再透视即得结果。

Step-01 选定“型号”和“序号”列,单击“逆透视其他列”:

Step-02 选定“型号”、“序号”和“属性”(日期)列,分组对“值”列求和:

Step-03 选择“属性”列,单击“透视列”,在值列中选择“计数”列即可:

- 4 -

逆透视再透视法

这个特定的场景,完全可以逆透视后,再直接在透视时进行聚合,所以,上面方法中的分组步骤,其实是多余的。具体操作步骤如下:

Step-01 选定“型号”、“序号”两列,单击“逆透视其他列”:

Step-02 选择“属性”列,单击“透视列”,在弹出的对话框中选择“计数”列作为值列(此时默认为求和,无需多余操作)后单击确定即可:

因为可以直接在透视中进行聚合,所以,这个方法效率也很高,经测试,这个方法跟方法1——直接分组法接近,但这个方法最大的好处是,操作简单,而且能适应数据列不断增加的情况。

从这个简单的例子,大家可以看到,同一个问题,往往有很多的解决办法,在不同的场景下,可能不同的方法之间在效率、适应性等等方面都有差异。

在数据量不大时,不一定要过多关注效率问题,毕竟刷新一次差个几秒十几秒的,其实并不影响大局。

但是,如果数据量比较大,初步使用的方法明显影响工作效率,那么,可以尝试不同的方法,对比各种方法的效率差异,从而尽可能优化——当然,这些都要基于对基础知识的熟练运用,正所谓:熟,能生巧;练,就不凡!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档