Power query 怎样统计重复次数,要求不删除重复项

作者:运营秋风
链接:https://www.zhihu.com/question/419825887/answer/2683600671
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上面的部分 答案 我测试过,遇到几万条数据,这个函数就会显得很慢。

我推荐 我自己使用这2种方法:速度是目前 最快了。

这样基本上就是可以筛选重复值在2以上的。里面的公式还可以调整数字出现几次的可以保留下来。

这个方法没有数字直观,但是速度运行明显快过用:List.Count和Table.SelectRows函数。


第二种方法是我自己测试想出来的,推荐给大家使用。运行速度超过其他的函数,估计是目前最快的函数方法了, 10多秒可以处理7万行数据。

方法思路如下:

  1. 先用 分组函数进行单列的计数
  2. 把单列放在一边
  3. 加载之前整个表格
  4. 然后在再用匹配函数随便找一个匹配
  5. 修改里面的代码,匹配分组步骤名的单列名称。
  6. 成功。

 

需要设计代码操作,我把源表格放在下面:

效果见下图:

代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    筛选的行 = Table.SelectRows(源, each ([类别] <> null)),
    分组的行 = Table.Group(筛选的行, {"字段X"}, {{"字段X分组计数", each Table.RowCount(_), Int64.Type}}),
    源重复引用2 = 筛选的行,
    合并的查询 = Table.NestedJoin(源重复引用2, {"字段X"}, 分组的行, {"字段X"}, "字段X计数", JoinKind.LeftOuter),
    #"展开的“字段X计数”" = Table.ExpandTableColumn(合并的查询, "字段X计数", {"字段X分组计数"}, {"字段X计数.字段X分组计数"})
in
    #"展开的“字段X计数”"

为了方便 大家理解和套版,我把源数据上传到百度网盘,方便大家下载参考:

链接:

提取码:yink

你看看这个,大概只有这样了.如果你想多个字段合并计数,多个表格.你就不能用Power query,这个太低效,你要用 Power BI Desktop ,的界面 用线条关联,用 dax函数,就是Power BI 的pivot超级透视, 他的计算能力强过 query,适合多个表格数据关联和计算. query只适合处理数据.

解释下关于步骤 源重复引用2
这个直接在源代码里面修改,修改步骤名为上一个的上一个。每一个步骤名就相当于一个表格,日常所以我们是根据上一个步骤的表格进行修改的,这次是要直接跳过正常步骤,往上一步的上一步走,所以你要理解每一个步骤的生成的表格,然后去用这个生成的表格就是步骤名


我还列出以下三个的方案:运行速度较慢:总体来说没有上面的速度快,2小时7w行数据都没有加载出来,电脑功率直接上升100%。。下面的数据是网上搜集的,并非自己原创。只是整理出来给大家参考,并不推荐使用。

方法1可以运行。

添加列计数 = Table.AddColumn(上一个步骤名, " 字段X计数", each List.Count(Table.SelectRows(源,(x)=>x[字段X]=[字段X])[字段X])),

方法2,
保留重复列x = Table.SelectRows(上一个步骤名,(x)=>List.Count(List.Select(上一个步骤名[字段X],each _=x[字段X]))>1)

方法3:

保留重复项x2 = Table.SelectRows(上一个步骤名,each (try 上一个步骤名{[字段X=[字段X]]})[HasError])

posted @ 2024-06-26 18:05  锦绣良缘  阅读(612)  评论(0)    收藏  举报