前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >效率直线拉升3000倍!基础操作就能做到!|PQ实战

效率直线拉升3000倍!基础操作就能做到!|PQ实战

作者头像
大海Power
发布2024-04-11 16:01:43
2670
发布2024-04-11 16:01:43
举报

导语:花10%的时间,熟练掌握Power Query的基础操作,解决80%的问题,再或10%的时间,掌握一些儿基础的M函数,再解决15%的问题,剩下的5%,需要的时候问人吧。

前些天,在群里有朋友抛了个Power Query的题目出来,后来听说这其实是狗子的订单处理规则之一:

问题描述得很清楚,推荐大家以后提问题的时候也参考这个方式,说清楚规则(逻辑),尽可能举例子,并给出想要的结果。

出题的朋友附上了初始的解法并给出了运行时长:158秒!

我们看一下他的具体解法:

这个公式很直接,就是筛选出到当前行为止与当前订单信息相同的数据进行计数,如果等于1,则是非重复,如果大于1,则重复。等同于Excel下面公式的方法:

- 1 -

直接优化公式

在前面很多文章中,我都提过,对于Table.SelectRows进行数据筛选的问题,首先可以对筛选的表进行缓存,以提高效率,加缓存非常简单,直接在原来的步骤里套上Table.Buffer函数即可:

加了Buffer之后,运行时间马上从158秒变成22秒,时间缩减到七分之一:

- 2 -

操作法

实际上,这个问题非常简单,直接操作即可,而且,效率还非常高!

因为我们只要各订单第一条数据标注非重复,所以,我们可以直接通过删重复得到各订单的第一条数据,这样即可以直接标记为“非重复”——这就直接解决了核心的“非重复”数据标志的问题。

但是,我们毕竟不能把重复的数据都丢掉,所以,我们可以把删除掉重复项的数据和源数据进行匹配(提前加好索引+合并查询)。具体操作步骤如下:

Step-01 添加索引

数据导入PQ后,先添加索引

Step-02 复制查询

复制一份数据,用于删重复以得到各订单的第一行

Step-03 删除重复项

对复制出来的查询进行删除重复项

Step-04 添加自定义列,标记“非重复”:

Step-05 合并查询

将非重复内容匹配回需要输出的结果表:

Step-06 展开、替换

展开后得到“非重复”内容,然后对null的内容直接替换为“重复”:

最后删除掉不需要的列然后加载到Excel即可,通过这种方式处理的效率怎样呢?刷新一下看看:

0.03-0.04秒!相对22秒,再提升500倍!

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

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

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

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

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