ODS 贴源层设计

ODS 与源系统保持同构:字段名、类型尽量不动,只做落地与分区管理,保留原始信息便于对账与回溯;常见做法是增量抽取与周期全量快照两条链路并存。

原则同构落地、不加工、可追溯
分区按抽取日期 dt 分区
写入增量场景按当日分区覆盖
保留按合规要求保留原始数据

ODS 建表

ODS 建表
CREATE TABLE IF NOT EXISTS ods_order_mysql (
  id           BIGINT COMMENT '订单id',
  user_id      BIGINT,
  total_amount DECIMAL(18,2),
  status       INT,
  create_time  STRING,
  update_time  STRING
) COMMENT '订单表贴源'
PARTITIONED BY (dt STRING COMMENT '抽取日期')
STORED AS ORC;

当日分区覆盖写入

当日分区覆盖写入
INSERT OVERWRITE TABLE ods_order_mysql PARTITION (dt='2026-10-11')
SELECT id, user_id, total_amount, status, create_time, update_time
FROM src_order
WHERE update_time >= '2026-10-11 00:00:00';
ODS 不做业务规则清洗,能省掉大量数据对不上时无法回源的争论;清洗放 DWD。

易错点

  • 在 ODS 做类型转换与脱敏,原始值丢失后无法与源库对账
  • 只保留增量不保留全量快照,源端物理删除的记录无从发现

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》数据引入层(ODS)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌