先给结论:报告页数多于实际对象数量,通常不是“多出来的页”本身有问题,而是分页、筛选和对象合并三种口径混在了一起。要判断该不该去重,先把每一页还原成它对应的对象标识,再看同一个标识是否因为不同查询条件、不同时间点或不同子项被重复计入。只有确认重复来自同一对象被拆开呈现,才适合合并;如果每一页对应的是不同对象,页数多反而是正常结果。
第一种解释是分页重复。报告按行输出,一个对象在多个查询条件下命中,或同一对象在不同时间点被分别记录,就会占据多行。此时页数虚高,但对象数量没有变。
第二种解释是对象定义不同。比如一个页面同时承载多个可独立观察的查询对象,报告按“查询对象”计数,而人工按“页面”计数,两个数字本来就不该相等。这种情况下强行去重,会把真实存在的差异抹掉。
区分这两种解释的关键,不是看页数差多少,而是看每页是否带有稳定、可复现的对象标识。标识相同而条件不同,是分页重复;标识不同而父级相同,是对象拆分。
把报告导出为可逐行核对的清单,至少保留四列:对象标识、查询条件、记录时间、来源分组。然后按对象标识排序,观察同一标识出现的次数和差异位置。
如果报告只给出页数,不给出对象标识,那么页数本身无法作为去重依据。此时应先回到导出设置,确认能否增加标识列;如果无法增加,就需要在核对环节手工补一列,并注明补列规则。
假设某份报告共 120 行,按每页 20 行计算为 6 页,而人工清点实际对象为 80 个。先不急着删行,而是按对象标识分组。若发现 40 行来自同一批对象的两个查询条件,那么对象数仍是 80,页数多出来的是条件维度;若发现 40 行来自同一对象的四个时间点,那么对象数仍是 80,页数多出来的是时间维度。两种情况下,去重动作不同:前者合并条件列,后者保留时间列。
这个例子里的数字只用于说明比较方法,不代表任何工具的实际输出规模。真正可复用的动作是:先确定“对象”指什么,再确定“页”由什么维度产生,最后才决定去重规则。
多个角色对同一事实理解不同,往往是因为各自默认了不同的计数单位。把分歧转成项目,可以按以下顺序推进:
一个实际动作及其影响:在导出报告中新增“对象标识”列并按它排序。如果排序后同一标识连续出现且条件列不同,下一步就应合并条件列并重新计数;如果排序后同一标识分散在不同父级下,下一步就应保留父级列,而不是删行。这个动作的结果直接决定后续是“去重”还是“补维度”,避免把口径问题误当成数据错误。
上述判断适用于报告已经能导出逐行数据、且对象标识可被稳定识别的情况。如果报告只提供汇总页数,没有逐行明细,那么任何去重都只能停留在推测层面,应先解决数据可核对性。
还需要注意:请求量、抓取量或某项统计归零,不能单独证明去重正确。它也可能是筛选条件写错、时间窗口错位或导出中断造成的。要排除这些解释,至少需要换一个时间窗口重跑一次,并对比同一对象标识是否仍然出现。只有多次核对后对象数量稳定,去重规则才具备可重复性。
具体工具是否支持对象标识列、是否支持按条件合并,需要以你实际使用的版本和导出设置为准,不能仅凭页数表现推断功能边界。