DWS 层是什么
DWS(轻度汇总层)介于明细层与集市层之间:按主题域把明细做一次轻量汇总,常见粒度是「日 × 用户」「日 × 商品」,让多个下游报表共用同一份结果。它的价值在于把重复的口径沉淀一次、用一次;粒度过粗会丢掉下游需要的维度组合,过细则退化成一份更贵的明细,收益有限。
基本信息
| 粒度 | 如 日 × 用户、日 × 商品 |
|---|---|
| 内容 | 可加度量与常用派生字段 |
| 复用方式 | 多个 ADS 共用一张 DWS |
| 更新方式 | 按 dt 覆盖写入 |
| 上游 | 通常来自 DWD 明细表 |
| 建模理论 | 维度建模中的一致性维度与事实表思想 |
用户主题日汇总
用户主题日汇总
INSERT OVERWRITE TABLE dws_trade_user_1d PARTITION (dt='2026-10-11')
SELECT user_id,
COUNT(DISTINCT order_id) AS order_cnt,
SUM(pay_amount) AS pay_amt,
MAX(create_time) AS last_order_time
FROM dwd_trade_order_detail_di
WHERE dt='2026-10-11'
GROUP BY user_id;典型使用场景
- 用户运营看板:日活、下单次数、支付金额按用户聚合,多张报表共享
- 商品分析:按商品维度的销量与退货汇总,供选品与库存分析使用
- 渠道分析:按渠道日汇总投放效果,避免每个报表各自算一遍
- 降低重复计算:同一口径被三个以上下游使用,就值得沉淀到 DWS
- 拉链与快照:需要看某个历史时点的汇总状态时按天保留快照
分层职责对照
| 层 | 内容 | 典型问题 |
|---|---|---|
| DWD | 明细事务数据,字段最全 | 查询重、重复计算多 |
| DWS | 按主题域轻度汇总 | 粒度过细则收益有限 |
| ADS | 面向具体报表的结果 | 口径容易被复制多份 |
| DIM | 维度与码表 | 变更未同步会让关联失真 |
判断是否值得进 DWS:同类汇总被两个以上下游使用且逻辑稳定;一次性需求直接写在 ADS。
DWS 表通常按 dt 分区保留快照,重算某天只需覆盖该分区;如果下游用法是「累计至今」,建议另建一张累计表而不是在日快照上反复累加。
DWS 的字段命名与口径注释要写清:度量列是「当期值」还是「累计值」、是否含退款、时间口径取付款还是下单,这几件事靠名字说不清,最终一定会被下游理解错。