
删除重复项,在很多情况下是一个很简单的问题,无论是基于单列,还是多列。
但是,有一种情况不太一样,比如下面这种两点之间路径的里程问题:
从A地到B地,以及从B地到A地,视为重复的数据,只需要其中一条(对于多条相同起止——如A-B的情况已删重复):

显然,这个问题无法直接通过PQ的删除重复行操作功能实现。实际上,从思路上,这是一个针对某项内容,判断此前是否出现过的问题,类似于Excel中如下公式:

但是,因为这个问题涉及两列,所以,问题要稍微复杂一些。具体怎么做呢?下面直接在操作步骤中进行讲解。
Step-01 合并起止列,形成“起:止”形式数据

Step-02 合并止起列,形成“止:起”形式数据

Step-03 添加索引列
因为Power Query里无法像Excel里进行相对单元格或区域引用,因此,需要通过添加索引进行辅助计算(获取从第1行到当前上一行数据)。

Step-04 添加步骤,对“起止”列进行缓存
实际工作中,这种问题通常涉及数据量较大,而且,这个问题里将涉及对“起止”列的频繁重复调用,因此,先进行缓存,以便在后续重复调用时极大提升效率。

Step-05 判断“止起”形式的数据,在此前(List.FirstN)所有“起止”内容中是否存在(List.Contains):

Step-06 筛选结果为False的数据
所得结果为True,即表示当前路径的反方向形式在此前的路径中存在,即为重复数据。

至此,这个涉及往返路径删重复的问题即已得到解决。
其中,比较容易被绕进起止、止起组合的“死循环”里,这时,理清思路很关键,而要理清思路,可以在纸上罗列一些数据,静下心来逐行标记一下可能使用算法的计算结果,随着标记行数的增多,困惑就会越来越少,思路自然越来越清晰——
动起手来,问题往往就会迎刃而解!
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!