先判断一件事:报告里的“页数”是导出动作的产物,还是对象本身的计数。如果报告由分页接口或多次导出拼接而成,页数往往包含重复行、跨页断裂行和空行,而实际对象数量只统计唯一标识。两者不一致时,不要先删行,而是先给每行补一个稳定标识,再按标识去重,最后核对去重后的数量能否解释差额。
把原始报告当作待处理资料,而不是最终结论。常见差异有三种来源:同一对象在多个条件下分别命中,被当成多行;分页导出时边界行被重复写入;某些行缺少唯一标识,只能靠文本近似判断。
可以先用一个假设例子检验:假设报告有 120 行,其中 100 行有对象编号,20 行编号为空。先按编号去重得到 95 个对象,再检查空编号行是否与已有对象重复。如果空编号行里能匹配到 10 个已有对象,那么实际对象数量可能是 105 左右,而不是 120 或 95。这个数字只是说明比较方法,不代表任何真实数据。
处理动作从导出结构开始。先看报告是否带有分页标记,例如页码列、批次列或导出时间列。若有,先按这些列排序,观察同一对象是否跨页出现。
这一步的结果会直接影响下一步:如果去重后数量仍然高于实际对象数量,说明还有跨页断裂行或条件重复没处理;如果去重后数量低于预期,说明可能把不同对象误判成同一对象,需要回退并放宽匹配条件。
不是所有重复都该删。需要先判断重复行代表的是同一个对象,还是同一个对象在不同前提下的不同状态。
判断依据是前提是否发生变化。如果业务前提已经变化,例如同一个对象从测试阶段进入正式阶段,那么旧行和新行代表不同决策依据,不能简单去重。此时应把报告拆成两个视图:一个按对象汇总,一个按前提保留明细。
去重完成后,不要只看最终数量。建议增加三列核对:原始行号、去重依据、合并后对象数。然后做一次反向检查:随机抽取若干去重后的对象,回到原始报告里数它出现了几次,确认每次出现的原因是否一致。
如果报告页数与实际对象数量的差额无法用重复行解释,就要回到导出环节检查:分页参数是否被重复请求,导出范围是否重叠,或者报告是否把汇总行和明细行混在一起。此时正确的动作是重新导出或重新定义统计口径,而不是继续在现有报告里删行。去重后的数量应能对应到一个可解释的对象清单,下一步的筛选或分析才建立在稳定对象上。