10.1 维度建模基础
10.1.1 维度的基本概念
- 维度:度量即事实,维度即环境,维度是用于分析事实所需要的多样环境
- 维度属性:用于表示维度的列,是查询约束条件,分组和报表标签生成的基本来源。
-
主键分为代理键和自然键,用于标识维度具体值
- 代理键:不具备具体业务含义,一般用于处理缓慢变化维(后文会提到)
- 自然键:具备业务含义的键(比如对于商品id,对于前台应用系统来说是代理键,但是对于数仓来说是自然键)
10.1.2 维度的基本设计方法
维度的设计:就是确认维度属性的过程
维度设计步骤:
- 选择维度或者新建维度
- 确定主维表
- 确定相关维表:确认哪些表和主维表存在关联关系,并选择其中某些表生成维度属性
- 确定维度属性
确定维度属性的几点提示:
-
尽可能生成丰富的维度属性
-
尽可能多的给出包含一些富有意义的文字性描述。属性不应该是编码,应该是真正的文字。或者文字和编码同时存在。编码id用于表间的关联而名称用于报表标签
-
区分数值型属性和事实。
- 数值型字段用于约束或分组统计,则作为维度属性。
- 如果通常用于参与度量计算,则作为事实。
- 如果是离散型的数值则作为维度属性的可能性更大。
- 如果是连续性的,则作为度量的可能性较大。
-
尽量沉淀出通用的维度属性
10.1.3 维度的层次结构
包含连续主从关系属性层次:维度中的一些描述性属性以层次方式或一对多的方式相互关联
数据钻取方式:在属性的层次结构中进行钻取(比如商品输入类目,类目属于行业)
维度属性钻取结构的作用:可以分层次进行统计分析
10.1.4 规范化和反规范化
雪花模型:属性层次被实例化为一系列维度,而不是单一维度。大多数联机事务处理系统(OLTP) 的底层数据结构在设计时采用此种规范化技术,通过这种处理方式将重复属性移至其自身所属的表中,删除冗余数据。做数据修改时不需要修改大量冗余数据,而分析处理系统(OLAP) 数据相对稳定,不存在OLTP系统中所存在的问题。
雪花模型优点:
- 数据变更是可以避免修改多条记录。
- 节约一部分存储。
雪花模型的缺点:
- 需要做大量关联
- 查表性能差
反规范化: 将维度属性层次合并到单个维度中。
为什么要反规范化?
采用雪花模型,除了可以节约部分存储外,对于OLAP系统来说没有其他效用。而现在存储的成本非常低。处于易用性和性能考虑,维表一般是很不规范的。
10.1.5 一致性维度和交叉探查
交叉探查:将不同数据域的事实合并到一起进行数据探查,如计算商品PV,UV 与下单GMV 的转化率,交叉探查的前提数要保证一致性的维度。
维度一致性的几种表现形式:
- 共享维表。
- 一致性上卷,其中一个维度的维度属性是另一个维度的维度属性的子集,且两个维度的公共维度属性结构和内容相同。
- 交叉属性,两个维度具有部分相同的维度属性。