数仓与数据建模
星型/雪花、事实/维度、ETL。
35 分钟
数仓与数据建模
BI 分析师主要 消费 数仓,但不懂建模就容易 JOIN 错、指标重复、查询慢。本课建立星型模型、事实/维度与 ETL 分层直觉,与 /roadmaps/bi-analyst 建模节点对齐。
学习目标
- 理解 ODS / DWD / DWS / ADS(或 staging / mart)分层
- 区分事实表与维度表,读懂星型与雪花模型
- 知道缓慢变化维(SCD)对历史分析的影响
核心概念
分层架构
ODS / Staging — 贴源,结构与源库接近
DWD / Detail — 清洗、统一编码、明细宽表
DWS / Summary — 主题汇总(用户日活、订单日汇总)
ADS / Mart — 面向报表的应用层(BI 主要查这层)
BI 查 mart_track_daily 而非直接扫 cf_lesson 亿级明细,性能与口径都在 mart 层固化。
星型 vs 雪花
| 模型 | 结构 | 特点 |
|---|---|---|
| 星型 | 事实表 + 扁平维度 | JOIN 少,BI 友好 |
| 雪花 | 维度再规范化 | 省存储,JOIN 多 |
典型事实:fact_lesson_completion(度量:完课次数、学习时长)
典型维度:dim_track、dim_user、dim_date
事实表类型
- 事务事实:一行一事件(每次完课)
- 周期快照:每日库存、每日会员状态
- 累积快照:订单全流程(下单→支付→完成)
选错事实粒度会导致 同一 KPI 不可加(non-additive) 问题。
SCD 与 ETL
- SCD1:覆盖旧值,不保留历史(用户当前城市)
- SCD2:插新行 + 生效日期,保留历史(用户等级变更)
ETL 由数据工程师主导;分析师需参与 指标定义、维度属性需求、验收对账。
练习
- 为 CodeRoadMap 设计
fact_lesson_completion+ 2 个维度表字段清单 - 说明星型模型下「按 category 汇总 GMV」的 JOIN 路径
- 解释 SCD2 为何影响「去年同期用户等级」分析
小结
建模定粒度与口径;BI 在 mart 层思考,在 fact/dim 层理解来源。 深入 ETL 见 data-engineer-essentials,下一课进入分析类型与 ML 入门。
加载本节练习…