先给结论:不要只把重复触发当成脏数据删掉。正确做法是把修复前记录、修复动作和修复后记录分成三层保存,让同一用户在修复前后都能被追溯,同时避免把修复后的数据回灌成新的重复来源。下面以你手上的一份转化明细或一张事件表为对象,逐步说明怎么处理。
同样显示为两条转化,原因不同,保留策略也不同。常见的有三类:一是页面或应用在同一会话内多次上报同一事件;二是回传接口重试,导致同一事件被重复写入;三是用户真实完成了两次转化,只是时间接近。前两类属于技术重复,第三类属于业务真实。
区分证据可以看几个字段的组合:同一事件标识是否一致、发生时间是否落在很短的时间窗内、设备或用户标识是否相同、来源参数是否完全一致。如果事件标识相同,基本可以判定为同一次上报被重复写入;如果事件标识不同但用户和来源相同,需要结合业务动作判断是否为真实多次转化。
这里的关键动作是:先给每条记录打上“疑似重复原因”的标记,而不是直接删除。标记之后,你才能在不破坏原始证据的前提下继续修复。
建议用三个层次组织数据,而不是在同一张表上反复覆盖:
这样做的好处是:当有人质疑“为什么转化数变了”,你能拿出修复前、修复动作和修复后三段记录,而不是只给一个结果数字。
假设某次广告点击后,回传系统因超时重试,把同一个转化事件写入了两次。原始层会出现两条记录,事件标识相同,发生时间相差几秒。修复层的处理是:把第二条标记为“重复回传”,保留第一条作为有效转化。结果层只计入一次。
如果不去重,报表会显示两次转化,可能让你误判这条广告的转化效率。如果直接删除第二条而不留痕迹,后续就无法解释为什么原始记录和报表对不上。因此,修复动作本身要写入修复层,并注明处理规则和生效时间。
这个例子的数字只用于说明比较方法,不代表任何真实账户的表现。
修复动作本身也可能成为新的重复来源。例如,你从结果层重新导出数据并回传给广告平台,如果导出逻辑没有排除已修复记录,就可能再次触发重复。因此,每次修复后要做一次回灌检查:确认修复后的数据不会以相同事件标识再次进入原始层。
具体动作是:在修复层记录本次修复影响的记录范围,然后在回灌前用事件标识做一次比对。如果发现相同标识再次出现,说明回灌路径需要调整,而不是继续在结果层做二次去重。
当旧内容、旧系统或旧合作关系需要退出时,重复触发记录的处理方式会影响后续交接。必须留下的是:原始层中与转化相关的记录、修复层的处理依据、以及结果层的最终口径说明。可以归档但不必长期在线的是:已经被明确标记为重复且无业务争议的明细。
如果旧系统即将关闭,优先导出原始层和修复层,并确保导出文件包含事件标识、发生时间、来源参数和处理标记。只保留结果层是不够的,因为结果层无法还原修复过程。完成导出后,用一小段抽样记录验证导出文件能否与结果层对上,再决定是否关闭旧系统。