维度建模
出自 MBA智库百科(https://wiki.mbalib.com/)
维度建模(Dimensional Modeling)
目录 |
维度建模是数据仓库建设中的一种数据建模方法。Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。实体关系(E-R)建模通常用于为单位的所有进程创建一个复杂的模型。这种方法已被证实在创建高效的联机事务处理 (OLTP) 系统方面很有效。相反,维度建模针对零散的业务进程创建个别的模型。例如,销售信息可以创建为一个模型,库存可以创建为另一个模型,而客户帐户也可以创建为另一个模型。每个模型捕获事实数据表中的事实,以及那些事实在链接到事实数据表的维度表中的特性。由这些排列产生的架构称为星型架构或雪花型架构,已被证实在数据仓库设计中很有效。
维度建模将信息组织到结构中,这些结构通常对应于分析者希望对数据仓库数据使用的查询方法。1999 年第三季度西北地区的食品销售额是多少?表示使用三个维度(产品、地理、时间)指定要汇总的信息。
星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对 3NF 的建模方法,星型模式在性能上占据明显的优势。
同时,维度建模法的另外一个优点是,维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。这一点也是维度建模的优势。
但是,维度建模法的缺点也是非常明显的,由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。
另外一个维度建模法的缺点就是,如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。
原则1、载入详细的原子数据到维度结构中
维度建模应该使用最基础的原子数据进行填充,以支持不可预知的来自用户查询的过滤和分组请求,用户通常不希望每次只看到一个单一的记录,但是你无法预测用户想要掩盖哪些数据,想要显示哪些数据,如果只有汇总数据,那么你已经设定了数据的使用模式,当用户想要深入挖掘数据时他们就会遇到障碍。当然,原子数据也可以通过概要维度建模进行补充,但企业用户无法只在汇总数据上工作,他们需要原始数据回答不断变化的问题。
原则2、围绕业务流程构建维度模型
业务流程是组织执行的活动,它们代表可测量的事件,如下一个订单或做一次结算,业务流程通常会捕获或生成唯一的与某个事件相关的性能指标,这些数据转换成事实后,每个业务流程都用一个原子事实表表示,除了单个流程事实表外,有时会从多个流程事实表合并成一个事实表,而且合并事实表是对单一流程事实表的一个很好的补充,并不能代替它们。
原则3、确保每个事实表都有一个与之关联的日期维度表
原则2中描述的可测量事件总有一个日期戳信息,每个事实表至少都有一个外键,关联到一个日期维度表,它的粒度就是一天,使用日历属性和非标准的关于测量事件日期的特性,如财务月和公司假日指示符,有时一个事实表中有多个日期外键。
在商业智能项目的实施过程中,维度建模技术和企业数据仓库建模是两种不同的方法论,以下是在以应用驱动、提供快速原型的商业智能项目的实施和规划过程中使用的维度建模方法时的标准实施过程。具体到项目中则根据项目的规模及所涉及的业务范围而有所补充或裁减。
1. 商业智能项目规划
a) 数据仓库项目的定义及范围
b) 项目准备评估
c) 业务合理性证明
2. 商业智能项目业务需求定义
a) 业务需求收集
b) 业务需求审查
c) 数据审计
3. 数据仓库逻辑设计
3.1. 维度建模
维度建模是一种逻辑设计技术,该技术试图采用某种直观的标准框架结构来表现数据,并且允许高性能存取。维度模型是用来设计向最终用户交付的数据库的一种快速交付技术。
3.2. 定义数据仓库总线结构
a) 业务驱动维度建模
b) 数据仓库总线结构矩阵
c) 一致性维度
d) 一致性事实
一致性维度和一致性事实是数据仓库的“总线”
e) 单元数据集市
来源于单个事务
f) 多元数据集市
客户利润率,其中描述收益的传统源必须与描述成本的传统源组合在一起使用。
来源于多个事务
应该从单元数据集市开始创建数据集市。
g) 事务模式数据集市
h) 周期快照数据集市
i) 累计快照数据集市
3.3. 定义高级数据模型逻辑图
3.4. 维度模型的设计过程
a) 选取业务处理
b) 定义粒度
c) 选定维度
d) 确定事实
3.5. 源数据-目标数据映射(ETL规则定义)
a) 维度表映射
b) 事实表映射
3.6. 产出文档
a) 数据仓库总线结构文档
b) 高级数据模型文档
c) 数据模型及ETL设计文档
4. 数据仓库物理设计
4.1. 创建物理数据模型
a) 选择数据建模工具
b) 物理数据结构的设计
4.2. 制定最初的索引计划
a) 为事实表创建索引
b) 为维度表创建索引
a) 保存数据库创建脚本和参数文件
b) 创建物理存储结构
4.4. 产出文档
a) 数据模型设计文档
b) 数据库创建脚本文档
c) 数据库初始化脚本文档
d) 在数据模型及ETL设计文档中加入相关部分的设计内容
5. ETL设计与开发
5.1. 维度表装载设计
5.2. 事实表装载设计
5.3. 聚合表和多维联机分析处理装载
5.4. 数据仓库的操作与自动化
数据仓库操作都是在非公开方式下定期执行装载处理。
5.5. 产出文档
a) 项目开发文档
b) 在数据模型及ETL设计文档中加入相关部分的设计内容
6. 多维数据集开发
6.1. 数据集市定义
a) 维度定义
b) 度量值组定义
c) 计算成员定义
6.2. 透视定义
根据用户应用需求将多个度量值组组合在一起,定义出一个多维数据集的子集。
6.3. 产出文档
a) OLAP 多维数据集项目开发文档
b) OLAP 多维数据集业务说明文档