You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery:按特定条件删除重复行并保留首个条目

问题解决方案

一、修复Ron Rosenfeld方案中的数据类型错误

你遇到的数据类型错误,根源是生成ShiftedStatus列时错误引用了数值类型的Version列,而该列需要对应文本类型的状态字段StatutModifié。修改后的代码如下:

#"Colonnes groupées" = Table.Group(#"Minimal", {"ID"}, {
    {"Filtered", (t)=>
        let
            sorted = Table.Sort(t,{{"Version", Order.Descending}}),
            shifted = Table.FromColumns(
                Table.ToColumns(sorted) & {List.RemoveFirstN(sorted[StatutModifié],1) & {null}},
                type table[ID=number, Version=number, ModificationDateTime=datetime, StatutModifié=text, ShiftedStatus=text]),
            deleteRows = Table.SelectRows(shifted, each [ShiftedStatus] = null or not Text.Contains([ShiftedStatus], [StatutModifié], Comparer.OrdinalIgnoreCase))
        in
            deleteRows, type table[ID=number, Version=number, ModificationDateTime=datetime, StatutModifié=text]}
    }),
#"Expanded" = Table.ExpandTableColumn(#"Colonnes groupées", "Filtered", {"Version","ModificationDateTime","StatutModifié"})
in
#"Expanded"

关键修改点:

  • 将t[Version]替换为sorted[StatutModifié],确保ShiftedStatus列与StatutModifié列数据类型一致
  • 调整Text.Contains的逻辑:原代码会保留状态未变化的行,若要保留状态变更的首个条目,需用not Text.Contains过滤掉与上一状态重复的行

二、用Table.Buffer优化性能

针对Davide Bacci方案的慢速度问题,Table.Buffer可以将表格数据缓存到内存,减少重复读取/计算,尤其适合SharePoint这类外部数据源。具体用法:

  1. 缓存整个源表格(分组操作前):
#"Buffered Table" = Table.Buffer(#"Minimal"),
#"Colonnes groupées" = Table.Group(#"Buffered Table", {"ID"}, { ... })
  1. 缓存分组内的子表格(分组函数内部):
{"Filtered", (t)=>
    let
        bufferedT = Table.Buffer(t),
        sorted = Table.Sort(bufferedT,{{"Version", Order.Descending}}),
        ...
    in
        deleteRows, ...}

缓存后,Power Query无需反复从SharePoint拉取数据,300行的处理速度会大幅提升。

补充提示

  • 确保Version列的排序逻辑与状态变更时间一致,这样状态变更的顺序判断才准确
  • 若状态是严格匹配(无模糊需求),可以用[StatutModifié] <> [ShiftedStatus]替代Text.Contains,进一步提升性能

内容的提问来源于stack exchange,提问作者Ge0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:02:37