先给结论:不要急着删掉重复记录,也不要把它们合并成一条。正确做法是给每次触发留下不可改写的原始事件,再用一个“修复批次”字段把修复前和修复后的事件关联起来。这样既能看清重复发生的规模,又能在对账时把同一笔转化只计一次。
重复触发通常有三种来源,处理方式并不相同。第一种是页面或应用在用户返回、刷新时再次上报同一动作;第二种是同一动作经过多个上报通道各发一次;第三种是修复脚本回放历史数据时把旧事件又写了一遍。前两种的原始记录都应该保留,第三种则必须额外标记回放来源。
判断依据可以看三个字段:事件标识是否相同、触发时间是否集中在几秒内、设备或会话标识是否一致。如果三项都吻合,基本可以判定为同一动作的重复上报,而不是两个真实转化。此时要做的不是删除,而是补一个去重键。
把数据分成两层最省事。原始层只追加、不修改,每条记录保留上报时间、来源通道、事件标识和当时的参数快照。修复层则记录你对这批数据做了什么:去重规则、执行时间、影响范围、执行人。
一个可执行的短例子(假设场景):某落地页的表单提交事件在用户刷新后重复上报,同一事件标识出现了两条记录。你在原始层保留这两条,然后在修复层写一条批次记录,说明“按事件标识去重,保留最早一条”。后续对账时,先看修复层知道发生过什么,再回原始层核对,两边的数字都能解释得通。
这样做的实际结果是:当广告平台或财务问起“为什么后台显示 120 次转化、你的报表只有 100 次”时,你能拿出被去重的 20 条原始记录和对应的批次说明,而不是只能回答“系统问题”。
修复前先做一次快照,把待处理记录的标识列表导出并保存。修复时不要直接覆盖原字段,而是新增标记字段,例如 dedup_status 和 repair_batch_id。这样即使去重规则后来被证明有误,也能按批次回退,而不必重新拼凑数据。
需要提醒的是,请求量、抓取量或某个计数归零,并不能单独证明修复正确。它也可能是上报通道中断、页面改版漏埋点或统计任务延迟造成的。要排除这些解释,至少同时看原始层的新增记录数和修复层的批次记录数是否对得上。
当旧页面、旧系统或旧投放合作要下线时,判断标准不是“还有没有流量”,而是“这段记录以后还能不能用来解释一笔收入”。仍然有价值的通常包括:原始事件记录、修复批次说明、当时的计费口径和结算凭证。可以清理的是临时调试日志、重复导出的中间文件。
具体动作是:先冻结这批数据的写入,再导出原始层和修复层,最后在下线清单里写明数据存放位置和保留期限。这样做的影响是,下一阶段的收入核对不必依赖已经关停的系统,也避免因为找不到修复记录而把重复转化重新算进收入。
技术上的去重只解决数据问题,收入口径还得靠文档固定下来。建议在每次结算前,用同一套去重键跑一遍,并把结果与上一期对比。如果差异突然变大,先查是不是有新通道接入或旧通道回放,而不是直接调整收入数字。
同时要记住,付费广告和自然搜索是不同机制,广告带来的转化记录不会因为修复而影响自然流量的统计口径。涉及具体平台的审核规则、界面和价格,应以官方说明为准,不要凭旧截图推断当前状态。