DWD 明细层设计

DWD 按业务过程组织明细:完成清洗、类型统一、字段命名规范与必要的维度退化,一行代表一次业务事件(或一天明细),是后续所有汇总的公共数据源。

粒度一次业务事件(下单、支付、退款)
加工去重、空值处理、枚举标准化、单位统一
组织按业务过程建表,不按报表建表
更新日增量分区,支持重跑覆盖

去重与规范化

去重与规范化
INSERT OVERWRITE TABLE dwd_trade_order_detail_di PARTITION (dt='2026-10-11')
SELECT order_id, user_id,
       CAST(amount AS DECIMAL(18,2)) AS pay_amount,
       CASE status WHEN 1 THEN 'created' WHEN 2 THEN 'paid' ELSE 'unknown' END AS status_name,
       create_time
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY update_time DESC) AS rn
  FROM ods_order_mysql WHERE dt='2026-10-11'
) t WHERE rn = 1;
同一业务过程只建一张明细表:多个需求各自建表会造成同源不同数,是口径混乱的常见起点。

易错点

  • 在 DWD 做跨天聚合,导致明细表无法复用于其它粒度需求
  • 用 ROW_NUMBER 去重时排序字段选错,取到的是旧状态那条记录

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》明细数据层(DWD)
  • Kimball《The Data Warehouse Toolkit》业务过程建模
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌