先给结论:不要只保留“修复后”的干净数据,也不要让重复事件直接覆盖原始记录。正确做法是把每次触发都当作独立事实留存,再用一个可追溯的归并规则生成“去重后口径”。这样你既能解释报表为什么变化,也能在平台回传、落地页脚本和订单系统之间对账。下面以你手里的一份转化明细表为例,说明具体怎么处理。
重复触发通常分三种,处理代价完全不同。第一种是同一用户在极短时间内连续触发,比如按钮被双击、页面刷新导致脚本重发;第二种是同一业务事件从两个入口上报,比如落地页脚本和订单完成页各发一次;第三种是修复动作本身造成的历史回补,比如你改了触发条件后重新跑了一遍回传。
判断依据不是“数量变多了”,而是看事件标识。假设你的明细表里有这几列:事件时间、用户标识、订单号或业务主键、事件来源、上报状态。如果同一业务主键在几秒内出现两条、来源相同,大概率是前端重复;如果同一业务主键来源不同,属于多入口上报;如果同一批历史数据在修复当天集中出现,属于回补。
这一步的实际动作是:先给每条记录打上“批次标签”,比如原始批次、修复批次。结果是,后续任何汇总都能按批次拆开看,而不是把新旧数据混成一锅。没有批次标签,后面所有取舍都说不清。
做法一:保留全部触发记录,只在汇总层去重。成立条件是你能稳定拿到业务主键,并且能接受明细表体积变大。代价是明细查询更慢,且需要每个使用方都记得按主键去重,否则不同人拉出的数字会不一致。
做法二:在写入时就覆盖或丢弃重复记录,只保留一条。成立条件是重复原因已经定位并修好,且业务上不关心“曾经重复过几次”。代价是丢失诊断证据,一旦后续发现去重规则有误,无法还原当时到底发生了什么。
选择条件可以这样定:如果重复原因尚未查清,或者涉及跨系统对账,选做法一;如果重复原因明确、且下游只消费聚合指标,可以在明确记录规则后选做法二。但即便选做法二,也应保留一份只追加不修改的原始日志,作为最后依据。这个原始日志不需要长期在线可查,但要在修复说明里写清存放位置和保留期限。
建议按三层组织,而不是简单打一个“已修复”标记。
实际动作是:在归并层增加“合并数量”和“首次触发时间”“末次触发时间”三个字段。结果是,你既能按末次时间看最终状态,也能按首次时间看用户最初行为,两个口径都能解释,不会互相打架。
假设某账户的转化明细原本每天约一百条,修复了重复触发问题后,当天记录变成一百三十条。这不一定说明修复失败。可能的解释包括:修复同时把此前被错误拦截的正常触发放行了;或者回补批次被计入了当天;或者统计区间边界发生了变化。
处理动作是:先按批次标签把当天记录拆成“实时批次”和“回补批次”,再分别统计。如果增量全部来自回补批次,那么实时转化并没有异常;如果实时批次也增加,再去看来源分布,确认是否有多入口上报被同时放行。这个动作的结果会直接决定下一步:是继续调整去重规则,还是只需要修正报表口径说明。
需要提醒的是,请求量、抓取量或某条统计归零,都不能单独证明处理正确。归零也可能是埋点未加载、上报被拦截或统计任务未跑,必须结合原始层记录一起看。
如果你现在只有一份混杂的明细表,优先做三件事:加批次标签、加业务主键、把原始层设为只追加。不要先急着写复杂的去重逻辑,因为规则会随重复原因变化,而原始记录不会。
验收时用一个小样本对照:随机取二十个业务主键,手工数出原始层条数,再和归并层的合并数量比对。如果不一致,先修归并规则,不要动原始层。确认一致后,再把口径层指向归并层,并在报表说明里写清去重依据。
最后要区分机制:付费广告的转化回传与自然搜索的统计是两套体系,广告投放本身不构成自然排名保证。平台当前的审核规则、界面和价格应以官方说明为准,本文不代为断言。把修复前后的记录留成可追溯的三层结构,你后续无论换报表、换对接方式还是复盘异常,都有据可查。