首页/数据/数据工程与 ETL 速查/数据去重的常见模式
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

数据去重的常见模式

重复来源:上游重发、至少一次投递、任务重跑。批侧用 ROW_NUMBER 取最新一条;流侧用去重状态或下游 upsert 收敛。

批处理去重ROW_NUMBER() OVER (PARTITION BY 主键 ORDER BY 更新时间 DESC)
流式去重按主键维护最近 N 条或状态 TTL
兜底落库端按主键 upsert

SQL 去重取最新

SQL 去重取最新
SELECT *
FROM (
  SELECT o.*, ROW_NUMBER() OVER (
           PARTITION BY order_id ORDER BY updated_at DESC) AS rn
  FROM ods_order o
) t
WHERE rn = 1;
去重键要覆盖完整业务主键;组合主键只取其中一列去重会误删不同业务实体的记录。

易错点

  • 按 updated_at 排序时存在空值会排到两端,先补默认时间再排序
  • 流式去重状态无 TTL 会无限增长,必须给 key 设置过期

数据来源与参考

  • Apache Hive LanguageManual:Windowing 与 Analytics 函数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌