先给结论:不要直接删除重复数据,也不要让新旧记录混在同一张表里。正确做法是给每条转化事件加上可追溯的“来源批次”和“修复状态”,把修复前的原始记录冻结保留,修复后的记录另起一批,再通过统一的事件ID把两边对应起来。这样你既能看到修复前的真实偏差,也能验证修复动作是否真的生效。
重复触发通常分两种情况,处理方式完全不同。
判断依据不是看数量,而是看能否为每条记录找到唯一业务凭证。能对应到唯一订单号、唯一表单提交ID的,属于第一类;只能对应到设备或号码的,属于第二类。这个判断直接决定下一步是自动去重还是人工复核。
很多人发现重复后第一反应是直接改数据库或重传数据,结果修复前后无法对比,后面再出问题也说不清是哪一步造成的。正确动作是:
repair_batch(修复批次号)和repair_status(原始/已修复/待确认)。这样做的结果是:当后续发现修复过头或漏修时,你能随时回到原始批次重新比对,而不是凭记忆猜测改了什么。
是否保留全部重复记录,取决于你的分析目标。
条件一:目标是核对消费与转化的对应关系。此时应保留去重后的净转化数作为主口径,但同时在旁保留一份重复计数。因为重复触发往往意味着回传链路不稳定,重复率本身就是一个诊断信号。如果只看净数,你会漏掉链路故障。
条件二:目标是排查某次修复是否生效。此时应以修复批次为分析单位,对比修复前后同一时间段的转化数、重复率和去重后净数。如果修复后重复率下降但净转化也同步下降,说明去重规则可能误杀了真实转化,需要回退到待确认状态重新审核。
两种条件的共同点是:原始记录不删除,修复记录可追溯。区别在于主口径选净数还是选批次对比。
假设某账户在三天内收到120条表单转化记录,其中40条带有相同的业务事件ID。修复前先冻结原始批次,然后按事件ID去重,得到80条净转化,写入修复批次A。
对比后发现:修复前三天日均40条,修复后日均约27条。此时不能直接认定“转化下降了”,因为下降部分来自去重。下一步应检查这40条重复记录是否集中在某一天或某个广告组。如果集中在某一天,可能是当天页面改版或回传脚本调整导致;如果分散在各组,则更可能是回传机制本身不稳定。
这个例子的数字仅用于说明比较方法,不代表任何实际账户的表现。关键是:只有保留了修复前原始批次,你才能做出上面这种归因,否则只能看到一个变小的数字。
当转化事件涉及跨系统对账、且两个系统的业务ID体系不一致时,不能简单按单一事件ID去重。此时需要先建立映射表,明确以哪个系统的ID为准,再把另一系统的记录标记为“参考记录”而非直接合并。否则去重后的数据在财务对账环节会对不上。
另外,如果重复触发是由平台侧回传机制引起的,而你无法获取原始回传日志,那么冻结和批次标记只能做到本地记录层面,无法还原平台侧的真实上报次数。这种情况下应在记录中注明“平台侧不可追溯”,避免后续把本地净数当作平台真实转化数使用。
最后提醒一点:广告投放与自然搜索结果是不同机制,修复转化记录不会影响自然排名,也不能保证广告成本一定下降。记录修复的价值在于让判断有据可依,而不是替代对投放策略本身的评估。