数据仓库设计
在数据仓库(Data Warehouse)设计中,维度表(Dimension Table) 和 事实表(Fact Table) 是两大核心构建块。通过它们的有机组合,演化出了商业智能 (BI) 领域最常用的 星型模型 和 雪花模型。
1. 维度表 (Dimension Table / Dim)
Section titled “1. 维度表 (Dimension Table / Dim)”维度表构成了业务分析的“视角”,回答了业务动作中“谁、什么、哪里、何时”的问题。
1.1. 核心属性
Section titled “1.1. 核心属性”- 内容构成:包含详细的 描述性属性(Descriptive Attributes,如人名、地名、商品类目)。
- 物理特征:行数较少(数据增长慢),但列数较多(被称为“宽表”)。
- 主键设计:通常使用无业务含义的自增 代理键(Surrogate Key) 作为维度主键。
- 业务用途:作为数据筛选、分组(Group By)以及多维分析中的 切片与切块(Slice and Dice) 的入口。
示例(商品维度表 Dim_Product):记录 SKU_ID、品牌、颜色、供应商等不变或慢变信息。
2. 事实表 (Fact Table / Fct)
Section titled “2. 事实表 (Fact Table / Fct)”事实表是数据仓库的数据引力中心,记录业务动作产生的客观 度量值,回答了“发生了多少、金额多大”的问题。
2.1. 核心属性
Section titled “2.1. 核心属性”- 内容构成:主要由 数字度量(Numeric Measures,如销售额、点击量)和指向各维度表的 外键集合 组成。
- 物理特征:行数极其庞大(每天可能产生上亿条记录),但列数相对精简(“高而窄”)。
- 主键设计:通常由多个维度外键组成的 复合主键。
- 业务用途:支撑 BI 报表的聚合、求和(SUM)、求平均(AVG)等数学统计分析。
示例(订单事实表 Fct_Sales):仅记录时间代理键、商品代理键、客户代理键以及购买数量和实付金额。
3. 数仓核心建模架构
Section titled “3. 数仓核心建模架构”将事实表与维度表通过外键关联,即形成了数据仓库的架构模型。
3.1. A. 星型模型 (Star Schema)
Section titled “3.1. A. 星型模型 (Star Schema)”- 架构拓扑:事实表位于正中心,周围直接环绕着一圈维度表。各维度表之间 互不关联。
- 性能优势:关联(Join)路径极短,查询效率最高。它是主流 BI 工具(如 Tableau, PowerBI)优化支持的最佳结构。
- 劣势:维度表存在数据冗余(未满足数据库第三范式)。
3.2. B. 雪花模型 (Snowflake Schema)
Section titled “3.2. B. 雪花模型 (Snowflake Schema)”- 架构拓扑:在星型模型的基础上,对维度表进行进一步规范化拆分,形成层次结构(如“商品维度”向外拆分出独立的“品牌维度表”)。
- 设计优势:消除了维度数据冗余,维护成本更低。
- 性能劣势:执行分析时需要 多级 Join 连接,严重拖慢大规模数据的查询性能,架构更复杂。
4. 维度与事实对比速查表
Section titled “4. 维度与事实对比速查表”| 特性评估 | 维度表 (Dim) | 事实表 (Fact) |
|---|---|---|
| 存储内容 | 文本描述(谁/什么/哪里/何时) | 数字度量(频率/金额/数量) |
| 表体量 | 行数少(慢变数据) | 行数极多(海量快变数据) |
| 表结构 | 宽(列数多) | 窄(列数少,全为外键和数字) |
| 键类型 | 单一代理主键 | 复合外键组 |
| 分析用途 | 分组、过滤、提供业务上下文 | 计算、聚合、统计分析底座 |