星型模型是什么
星型模型是维度建模最常用的落地形态:一张事实表居中,直接连接若干维度表,图形上像一颗星。它的关键特征是维度表保持反规范化——商品的类目、一级类目这类层级字段都放在同一张维表里,而不是拆成多级规范表。这样查询时只需要一次连接就能取到全部描述信息,BI 工具和多数数仓实践都以它为默认形态,代价是维度字段存在冗余。
基本信息
| 结构 | 事实表居中,维度表一圈 |
|---|---|
| 维度处理 | 反规范化,层级字段冗余 |
| 优点 | 连接少、查询简单、BI 友好 |
| 代价 | 维度变更影响面较大需谨慎 |
| 对比形态 | 雪花模型(维度继续拆分成多级表) |
| 对比形态 | 星座模型(多个事实表共享维度) |
星型查询
星型查询
SELECT d.year_month, p.category, SUM(f.amount) AS amt
FROM fact_order f
JOIN dim_date d ON f.date_sk = d.date_sk
JOIN dim_product p ON f.product_sk = p.product_sk
GROUP BY d.year_month, p.category;典型使用场景
- 经营分析:按时间、商品、渠道等维度自由下钻的指标查询
- BI 自助分析:工具能自动识别事实与维度,生成查询不必手工写多级连接
- 口径统一:维度属性集中一处,避免每张报表各写一遍映射
- 性能优化:连接次数少,配合分区与列存扫描效率更高
- 跨主题对比:多个事实表共享同一套维度,指标之间可以直接比较
三种形态对比
| 形态 | 维度处理 | 特点 |
|---|---|---|
| 星型 | 维度反规范化 | 连接少,查询直观 |
| 雪花 | 维度继续规范化 | 节省冗余但连接层数增加 |
| 星座 | 多事实共享维度 | 跨主题分析方便,治理更复杂 |
| 宽表 | 维度属性直接打平进事实 | 查询最快,更新与冗余成本高 |
BI 工具与多数数仓实践默认星型;维度冗余(商品-类目-一级类目)换来的是查询免多级连接。
维度字段的冗余范围要控制:把整张商品属性都塞进维度表会让维表体积膨胀、更新代价上升,通常只放分析常用的层级与分类字段。