先给结论:不要按“页数”去重,要按“对象身份”去重。报告页数多出来,通常来自同一对象被拆成多行、多个查询条件各占一行,或分页时重复计数;实际对象数量才是后续判断的基准。处理时先确认报告里每一行代表什么,再决定是合并同一对象的行,还是保留多条件行但改看对象去重后的数。两种做法都成立,但适用条件不同,代价也不同。
打开报告后,先看是否存在一个能唯一标识对象的列,比如对象编号、完整名称或唯一链接。如果每一行都带这个标识,而同一标识出现多次,那多出来的页数大概率是重复行,不是对象变多。此时去重动作是:以该标识为键做一次合并,把同一对象的多个条件行折叠成一行,再统计行数。
如果报告里没有唯一标识,只有名称、分类或查询词,就要谨慎。名称相近不等于同一对象,强行合并会把两个不同对象算成一个,导致实际对象数量被低估。这种情况下,先补一个标识列,或者用“名称+分类”组合成临时键,再决定合并粒度。这个动作的结果会直接影响下一步:合并粒度太粗,后续任务会漏掉对象;太细,又会把同一对象拆成多条任务。
第一种做法是合并同一对象的全部行,只保留一条记录。它成立的条件是:报告确实存在稳定唯一标识,且多行只是同一对象在不同查询条件下的展开。代价是丢失条件维度,之后无法单独查看某个条件下的表现。适合后续只关心“对象是否被覆盖”,不关心条件差异的场景。
第二种做法是保留多条件行,但另算一个“对象去重数”作为主指标。它成立的条件是:条件差异本身有意义,比如不同地区、不同设备或不同时间窗口需要分别处理。代价是页数和对象数会长期不一致,阅读报告的人容易误判规模。此时要在报告顶部明确标注两个数:总行数和去重对象数,并说明两者差异来自条件展开,而不是对象新增。
选择依据可以归纳为一句:如果后续动作按对象派发,选第一种;如果后续动作按条件派发,选第二种但必须同时给出对象去重数。
多出来的页数通常来自三个可区分的原因,验证方式也不同:
这三类原因对应的处理不同:第一类直接合并;第二类保留行但另算去重数;第三类要回到导出或抓取环节,检查分页参数是否稳定,而不是在报告里硬删。把原因搞错,去重动作就会作用在错误的对象上。
假设一份报告有 120 行,按标识去重后是 80 个对象。进一步检查发现,其中 30 个对象各有 2 行,原因是同一对象在两个条件下各出现一次;另外 10 行是相邻页重复。此时正确动作是:先删掉 10 行分页重复,得到 110 行;再对 30 个对象各合并 2 行为 1 行,得到 80 行。最终对象数是 80,而不是 120,也不是 110。这个例子只用于说明比较方法,不代表任何真实报告的数据规模。
如果跳过第一步直接合并,会把分页重复也当成条件行,合并后仍然可能残留重复对象;如果跳过第二步只删分页重复,对象数会被高估。动作顺序会影响结果,所以先区分原因,再执行去重。
实际执行时,建议按以下顺序操作:
例外情况也要考虑:如果对象本身允许同名但不同实体,唯一标识必须能区分它们,否则去重会误合并;如果报告是跨时间窗口拼接的,同一对象在不同窗口出现属于正常,不应简单删除,而应说明时间范围。工具的具体字段名、导出方式和去重入口因产品而异,使用前需要核对当前版本的说明,不要假定某个按钮一定存在。
最后提醒一点:请求量、抓取量或某个统计归零,不能单独证明去重做对了。它也可能是查询条件变化、数据延迟或对象本身减少导致的。判断去重是否合理,要看对象身份是否被正确识别,以及后续任务是否按预期数量派发。