B. 数据仓库 — 建模技术 — 建模步骤
单场景维度设计步骤
- 选择业务过程业务过程:组织完成的操作型活动
- 业务过程通常用行为动词标示
- 由某个操作型系统支撑,如订单和购买系统
- 业务过程建立获取关键性能度量
- 业务过程通常由输入激活、产生输出度量
- 应该将注意力放在业务过程,而不是放在功能化的部门,可以更方便的获取一致的企业信息
- 声明事实粒度在所有维度设计中强制实行一致性是保证BI应用性能和易用性的挂件。在从给定的业务过程获取数据时,原子粒度是最低级别的粒度。原子粒度能够承受无法预期的用户查询。上卷汇总粒度对性能调整来说非常重要,但是这样的粒度往往要猜测业务公共问题。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度
- 确认维度包含BI应用所需要的用于过滤及分类事实的描述性属性维度表有时候被称为数据仓库的”灵魂“
- 维度定义的是谁,什么时候,在哪的问题,做什么事情,作为聚合查询中的查询条件,分组条件,排序条件
- 确认事实在事实表里面,一行对应一个事实所有事实只允许与声明的粒度保持一致
多场景维度设计:数据模型设计者需要具有全局和发展的视角,应该理解整体业务流程的基础上,从全局角度选取业务处理。数据仓库的模型设计者应该分析源系统的实体关系模型以及业务流程,选取在整体业务流程中的关键实体作为建模的基础,建立这些实体对象的数据粒度关系,因为不同粒度的数据是不能融合的一个事实表中的。
- 维度设计步骤
- 设计目标
- 尽可能生成丰富维度属性
- 尽可能多给出有意义文字性描述 (xxx_id + xxx_name)
- 沉淀出通用的维度属性 (需要复杂运算得到,比如商品的三级分类名称,需要JOIN品类表得到 category3 name)
- 维度设计步骤
- 确定主维度表 (例如商品主表)
- 确定相关维表(商品相关的类目、卖家、店铺相关维表)
- 确定维度属性的整合和拆分 (详细如下)
- 维度属性的整合和拆分:维度表分 水平 和 垂直 两类
- 垂直类 整合拆分 参考:
- 维度属性的产出时间、更新率、使用热度拆分的话用主从维表, 主维表存 产出时间短、更新率低、使用热度高的维度属性
- 水平类 整合拆分 参考:
- 不同业务的属性差异情况、关联程度
- 如果关联程度低: 一个业务一个维度表
- 有一定关联程度,也有一定差异性:定义一个主维度用来存放公共属性,同时定义多个子维度存放不同业务的特殊维度属性
- 很强关联程度,差异性也小:整合一个维表,允许存在 少量业务不一致导致数据空值
- 不同业务的属性差异情况、关联程度
- 垂直类 整合拆分 参考:
- 设计目标