数据仓库图解交互式教材
SQL 与数据加工从 DWD 到 DWS / ADS,一行发生了什么变化?
学习进度0 / 64
EN
首页课程学习从 DWD 到 DWS / ADS,一行发生了什么变化?
4-4SQL 与数据加工12 分钟

从 DWD 到 DWS / ADS,一行发生了什么变化?

沿着 DWD → DWS → ADS 的快照切换,观察账户明细如何收敛为存款余额指标。

DWDDWSADS聚合
从 4 行账户明细到 1 行指标,消失的行去哪了?

从 DWD 到 DWS / ADS,一行发生了什么变化?

同一批余额经过标准化、主题聚合和指标筛选后,行数会变化。每次变化都要重新说清楚:现在的一行代表哪一组业务事实。

DWD4 行一个账户 × 一个快照日
DWS3 行一组业务维度 × 一个快照日
ADS1 行一张指标卡 × 一个快照日

聚合不是把数字简单相加;它同时把明细的行含义改成了业务分组。

核心概念

聚合后的数据粒度

GROUP BY 保留的字段共同决定输出的一行代表什么。DWS 的一行不再代表某个账户,而代表一个快照日和一组指标维度。

DWD 还保留哪些事实?

DWD 的 4 行分别对应 A001、A002、A003、A004 在 2026-09-30 的账户余额。即使 A003 缺少客户关联、A004 缺少产品关联,它们仍然是已经发生的余额快照,不能在聚合前凭空消失。

这一步承接第 02 章的判断:数据粒度要能说清楚;这里关注的是加工后的一行含义如何变化,不再重新讲建模理论。

  • DWD:一行 = 一个账户 × 一个快照日。
  • DWS:一行 = 一个快照日 × 机构 × 客户口径 × 产品 × 币种。
  • ADS:一行 = 一张存款余额指标卡 × 一个快照日。
分层快照 · 观察行含义变化

切换一层,重新读一行

在 ODS、DWD、DWS、ADS 之间切换,查看当前层的行数、金额字段和一行代表什么。目标指标会在 ADS 收敛为 300,000。

正在加载交互实验…

DWS 不是“把所有余额加成一行”

DWS 保留指标复用需要的分组字段。A001 和 A002 都属于杭州分行、小微、定期、CNY,所以它们在 DWS 合并成 300,000;A003 的客户口径为空,A004 的产品类型为空,分别落在另外的分组里。

到了 ADS,系统只取指标卡指定的那一组。行数减少不是数据丢失,而是每一层承担的查询问题不同。

可选进阶实验 · 真实 SQL

亲手写一遍这条聚合 SQL

在浏览器里用真实 SQL 引擎(DuckDB)复现 DWD → DWS 聚合:改 WHERE 看统计范围,改 GROUP BY 看一行代表什么,并用确定性参考快照对照结果。默认折叠,不打开就不加载 SQL 引擎。