首页/数据/数仓建模速查/事实表追加写入与去重
维度与事实设计149 条

事实表追加写入与去重

事务事实表按分区追加写入;同一业务键在源端可能多版本到达,入仓时按唯一键去重取末条,保证行粒度不重复。

数仓建模速查数据更新于 2026-10-12
写入按分区 INSERT OVERWRITE
去重业务唯一键 + 更新时间
校验count 对比 distinct 键

分区去重写入

分区去重写入
INSERT OVERWRITE TABLE dwd_order PARTITION (dt = '2026-10-12')
SELECT t.order_id, t.user_id, t.amount, t.update_ts
FROM (
  SELECT o.*, row_number() OVER (PARTITION BY order_id ORDER BY update_ts DESC) AS rn
  FROM ods_order o WHERE o.dt = '2026-10-12'
) t WHERE t.rn = 1;
去重键必须是业务唯一键(如 order_id),没有唯一键的表要在设计阶段补上幂等键。

易错点

  • 按全字段去重,业务更新被误删
  • 重复加载无幂等键,行数随重跑翻倍

数据来源与参考

  • 数仓工程实践:事实表幂等写入
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌