先给结论:不要删除重复记录,也不要直接改掉原来的转化时间。正确做法是把修复前的事件标记为“作废或疑似重复”,另建一条修复后的事件,并用同一个业务标识把两者关联起来。这样既能恢复真实的转化次数,又保留了修复证据,后续对账、申诉或复盘都有据可查。下面按“保留什么、改写什么、什么条件下才退出”来讲。
不同原因对应不同处理方式,判断错了会把真实转化一起清掉。
可用的区分证据包括:事件时间差是否小于一个合理窗口、订单号或线索号是否相同、设备与账号标识是否一致。只要这些字段指向同一次业务动作,才按技术性重复处理。
修复前的那条事件要原样留在系统里,不要覆盖它的时间、金额或来源。你要做的是增加状态字段,例如 status=invalid_duplicate,再补一个 repair_batch_id 指向本次修复。这样做的实际效果是:报表默认过滤掉作废记录,但审计视图仍能看到它,也能回答“当时为什么多算了一次”。
如果旧系统不支持加字段,退一步的做法是导出一份修复前快照存到独立位置,并在原记录备注中写清修复批次。前提是这个快照可被后续查询到,否则等于没保留。
修复动作应产生一条新事件,而不是把旧事件改成正确值。新事件写入真实的发生时间、金额和渠道,同时带上指向原记录的关联标识。关联标识的选择取决于你的业务主键:订单号、线索号、用户加时间窗的组合都可行,关键是同一业务动作在修复前后能对上。
一个假设例子说明比较方法:某次活动回调被重试,同一订单产生了三条转化记录。修复时把其中两条标为重复,保留一条有效,并新建一条修正后的事件,三条都带同一个订单号。修复后统计该订单的转化次数为一次。如果不去重,转化次数会偏高;如果删除原记录,你无法解释偏高了多少、由什么引起。两种做法对后续投放判断的影响完全不同。
保留记录不是无条件的。当满足以下前提时,可以考虑把旧记录移出主库,只留归档:重复数据量已经影响查询性能;业务上确认这批数据不再需要逐条追溯;归档位置有访问权限控制和保留期限。反之,如果这批转化仍会被用于结算、申诉或跨期对比,就必须留在可查位置,不能只留一个汇总数字。
同样,旧合作关系退出时,对方回传的历史转化记录要不要保留,取决于你后续是否还需要按来源复盘。需要,就保留原始回传并标注合作已结束;不需要,也要先归档再停用接收入口,而不是直接关掉导致历史数据无法解释。
第五步的结果决定下一步:如果差异能逐条对上,说明修复完整,可以恢复常规投放判断;如果对不上,说明还有未识别的重复来源,应先扩大排查范围,而不是急着调整预算或否定渠道效果。付费广告的转化数据只反映广告带来的动作,与自然搜索是不同机制,修复后也不应把两者混在同一口径里比较。