维度表承载什么
维度表承载描述属性与层级关系:代理键(系统内自增或哈希生成)、业务键(源系统主键)、名称与分类层级、生效状态等。它是宽而扁平的,一行一个实体,是 BI 切片筛选的主要入口。维度表设计得好不好,直接决定下游能不能顺利「拖拽出报表」——常用层级与枚举映射预置在维度层,报表层就不用反复写 CASE WHEN。
基本信息
| 核心字段 | 代理键、业务键、属性、层级、生效标志 |
|---|---|
| 编码处理 | 枚举与状态码统一在维度层维护映射 |
| 层级组织 | 例如商品-类目-一级类目冗余在同一行 |
| 更新策略 | 按缓慢变化维策略决定历史保留方式 |
典型使用场景
- 用户与会员维度:等级、城市、注册渠道等切片属性
- 商品维度:类目层级、品牌、规格,支持多级下钻
- 组织与门店维度:上下级关系与所属区域
- 枚举统一:把源系统状态码翻译成可读文本,避免下游各写一套
- 代理键管理:为 Type 2 版本化预留稳定的代理键生成机制
用户维度表
用户维度表
CREATE TABLE dim_user (
user_sk BIGINT COMMENT '代理键,供事实表关联', -- 版本化时每个版本一个代理键
user_id BIGINT COMMENT '业务键,来自源系统', -- 同一实体的业务唯一标识
user_name STRING,
city STRING,
level STRING COMMENT '会员等级',
is_current BOOLEAN -- 是否当前有效版本
) STORED AS ORC;维度表字段设计
| 字段类型 | 作用 | 设计要点 |
|---|---|---|
| 代理键 | 事实表关联使用 | 稳定且不与源系统耦合,支持版本化 |
| 业务键 | 标识真实实体 | 源系统可能变更或复用,不宜直接当关联键 |
| 属性字段 | 切片与筛选 | 宽而扁平,常用分组预计算好 |
| 层级字段 | 多级下钻 | 冗余上级名称,避免报表层多层关联 |
| 生效标志 | 区分历史版本 | 与生效区间配合,避免查询命中多行 |
维度表尽量预计算好常用层级与分组,避免每次查询都在报表层重复写 CASE WHEN 映射,这类重复逻辑是口径不一致的主要来源。
维度表混入度量字段(数量、金额)会打破事实与维度的边界,导致同一个指标在维度表和事实表里算出两个数。