Appearance
数据建模
维度建模核心概念
维度建模(Dimensional Modeling)是数仓最主流的建模方法,由 Ralph Kimball 提出。
事实表(Fact Table)
记录业务度量事件,每行代表一条业务事实。
| 特点 | 说明 |
|---|---|
| 行数多 | 数十亿行级别 |
| 窄而高 | 列少(度量+外键),行多 |
| 度量值 | 金额、数量、时长等可加合字段 |
| 可加性 | 可沿任意维度相加(Additive) |
维度表(Dimension Table)
记录业务描述属性,每行代表一个维度成员。
| 特点 | 说明 |
|---|---|
| 行数少 | 通常几千到几百万 |
| 宽而矮 | 列多(描述属性),行少 |
| 文本属性 | 供分析时过滤/分组使用 |
星型模型 vs 雪花模型
星型模型(推荐):事实表 → 直接关联维度表(反规范化)
雪花模型:维度表继续规范化拆分(节省空间,查询复杂)推荐星型模型:查询性能好,理解简单,BI工具更友好。
缓慢变化维(SCD)
历史属性发生变化时的处理方式:
| 类型 | 处理方式 | 适用 |
|---|---|---|
| SCD Type 1 | 直接覆盖,不保留历史 | 错误修正 |
| SCD Type 2 | 新增一行,有效期字段标记(推荐) | 需要历史分析 |
| SCD Type 3 | 新增字段存旧值 | 只需一个历史版本 |
电商订单星型模型示例
dim_customer(客户维度)
│
dim_product ── fact_order ── dim_date(日期维度)
(产品维度) │
dim_region(地区维度)参见:CRM 数据模型