首页/数据/数仓建模速查/DWD 层职责:明细清洗与一致性
分层与规范64 条

DWD 层职责:明细清洗与一致性

DWD 保留业务过程最细粒度:去重、格式统一、枚举标准化、关联维度代理键;输出一行一事的明细事实表,同时供 DWS 加工与问题回溯。

数仓建模速查数据更新于 2026-10-13

DWD 是什么

DWD(Data Warehouse Detail)是明细数据层,保存业务过程最细粒度的事实,粒度原则是「一行一事」——一行订单、一行支付、一行退款。它夹在贴源层与汇总层之间,承担三类固定动作:去重、字段格式与枚举标准化、关联维度代理键。DWD 保留明细的意义在于可回溯:指标异常时能回到单据级核对,而不是只剩一个汇总数字无从下手。

基本信息

粒度业务过程最细,一行一事
主要动作去重、类型转换、枚举标准化、代理键关联
命名dwd_域_过程_周期,如 dwd_trade_order_di
周期后缀di 日全量、df 日增量、i 小时级

典型使用场景

  • 口径对不齐时回到明细逐单核对,判断是清洗写错还是汇总写错
  • 下游 DWS 与 ADS 统一从 DWD 取数,避免各自重复 JOIN 源表
  • 需要下钻分析(某笔订单为什么没算进 GMV)时提供单据级记录
  • 数据质量追溯:DWD 保留业务主键,可与源系统逐行比对定位差异
  • 作为对外数据服务的可审计底稿,报表数字能被追溯到具体单据

DWD 加工骨架

DWD 加工骨架
INSERT OVERWRITE TABLE dwd_trade_order_di PARTITION (dt='2026-10-13')
SELECT o.order_id,                                     -- 业务主键,保留以便回溯
       o.user_id,
       COALESCE(d.customer_sk, -1) AS customer_sk,     -- 维度代理键,缺失填 -1
       CAST(o.pay_amt AS DECIMAL(18,2)) AS pay_amt,    -- 统一金额类型与精度
       COALESCE(m.std_code,'UNKNOWN') AS order_status  -- 枚举标准化,走映射表
FROM (SELECT *, row_number() OVER (PARTITION BY order_id ORDER BY etl_load_time DESC) AS rn
      FROM ods_order WHERE dt='2026-10-13') o          -- 同单据多次落地时取最新
LEFT JOIN dim_customer d ON o.user_id = d.customer_id AND d.is_current=1
LEFT JOIN dim_code_map m ON o.order_status = m.src_code AND m.code_type='order_status'
WHERE o.rn = 1;

常见清洗动作

动作做法不做会怎样
去重按业务主键 row_number 取最新一条同单据重复计入,指标虚高
类型统一金额转 DECIMAL、时间戳统一时区下游比较与汇总出现精度或时区偏差
枚举标准化源枚举经映射表转标准码,未知填 UNKNOWN同一状态多种写法,统计被拆成多份
代理键关联LEFT JOIN 维表取 sk,缺失填 -1用 INNER JOIN 会静默丢单,行数对不上
枚举映射建议落成映射表(如 dim_code_map),SQL 引用映射表而不是在每个脚本里硬编码 CASE WHEN:新增枚举时只改映射数据,不用回头改所有下游脚本。
DWD 的字段口径一旦对外承诺就属于契约。上线后新增字段应可空、可缺省;删除或改名要走变更流程,否则下游脚本会在某天凌晨集中报错。

易错点

  • 在 DWD 里做聚合:粒度被抬高,下游无法下钻到原始单据,只能回补重跑
  • 用 INNER JOIN 关联维表:维表缺档的明细行被静默过滤,行数与上游对不上且不易察觉
  • 清洗规则硬编码在 SQL 里:枚举或类型变化时要逐个脚本改,容易漏改导致口径分裂
  • 不做去重直接落表:同一单据多次变更全量保留,下游汇总重复计算
  • DWD 直接引用另一张 DWD 的产物:跳过贴源对账,出问题时无法定位到源数据

数据来源与参考

  • Kimball《数据仓库工具箱(第3版)》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌