在PowerQuery中删除重复项就是忽略了我已经对数据进行了排序(因此删除了错误的重复项) [英] Removing duplicates in Powerquery is ignoring that I've sorted the data (so removes wrong duplicate)

查看:9
本文介绍了在PowerQuery中删除重复项就是忽略了我已经对数据进行了排序(因此删除了错误的重复项)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Excel中的一个名为Table1的表中有这个(示例)数据:

| PC Item  | Priority |
|----------|----------|
| AN123169 | P3       |
| AN123169 | P1       |
| AN123169 | P1       |
| AN123169 | P1       |
| AN123169 | P3       |  

优先级顺序排序并根据PC项删除重复项后,我预计将保留P1记录。相反,我得到的是P3

help file状态:

从查询编辑器中的Power查询表中删除所有行,其中 所选列中的值与先前的值重复。

我对此的理解是它保留第一条记录并删除后续记录?

我使用的M代码是:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"PC Item", type text}, {"Priority", type text}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"PC Item", Order.Ascending}, {"Priority", Order.Ascending}}),
    #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"PC Item"})
in
    #"Removed Duplicates"

#"Sorted Rows"之后,我有一个已正确排序的表:

| PC Item  | Priority |
|----------|----------|
| AN123169 | P1       |
| AN123169 | P1       |
| AN123169 | P1       |
| AN123169 | P3       |
| AN123169 | P3       |  

#"Removed Duplicates"之后:

| PC Item  | Priority |
|----------|----------|
| AN123169 | P3       |   

我一定要有一个P1记录吗?


我的第一个想法是颠倒排序,但是有了这个原始数据,我得到了作为唯一值返回的P3

| PC Item | Priority |
|---------|----------|
| AN310C4 | P3       |
| AN310C4 | P1       |
| AN310C4 | P1       |

使用此原始数据,我将返回P1

| PC Item | Priority |
|---------|----------|
| AN310C4 | P1       |
| AN310C4 | P1       |
| AN310C4 | P3       |

问题:

所以我想我的问题是-考虑到后续的M代码似乎忽略了我已经对数据进行了排序这一事实,排序是如何工作的?

推荐答案

使用Table.Buffer缓存中间查询结果,并在删除重复项时避免查询折叠。


样本数据:


更新M

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"PC Item", type text}, {"Priority", type text}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"PC Item", Order.Ascending}, {"Priority", Order.Ascending}}),
    #"Buffer Table" = Table.Buffer(#"Sorted Rows"),
    #"Removed Duplicates" = Table.Distinct(#"Buffer Table", {"PC Item"})
in
    #"Removed Duplicates"

结果:


文档(很少)找到here。找到信息性视频here

我找到了使用删除表中的错误行或添加索引列(并将其删除)来"中断"查询折叠的其他方法。然而,在我看来,缓冲区似乎很好。

这篇关于在PowerQuery中删除重复项就是忽略了我已经对数据进行了排序(因此删除了错误的重复项)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆