1.数据建模相关概念
数据几乎总是用于两种目的:操作型记录的保存和分析型记录的保存,简单来说,操作型系统保存数据,分析型系统使用数据。前者一般仅反映数据的最新状态,按单条记录事务性来处理;其优化的核心思路是更快的处理事务。后者往往是反映数据一段时间的状态变化,按大批量方式处理数据;其核心是高性能,多维度处理数据。
通常我们将操作型系统简称OLTP ---联机事务处理。将分析型系统简称为OLAP---联机分析处理。
2.维度建模
维度建模,是数据仓库工程领域最流行的数仓经典建模模型。
维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速的完成分析需求,同时还有较好的大规模复杂查询的响应性能。
他是面向分析的,为了提高查询性能可以增加数据冗余,反规范化设计技术。
2.1.事实表
事实表产生于业务过程,存储了业务活动或事件提炼出来的性能度量。从最低的力度级别来看,事实表行对应一个度量事件。
事实表根据粒度的角色划分不同,可分为事务事实表,周期快照事实表,累计快照事实表。
事务事实表:用于承载事务数据,通常粒度比较低,他是面向事务的,其粒度是每一行对应一个事务,他是最细粒度的事实表。
周期快照事实表:按照一定的时间周期间隔来捕捉业务活动的执行情况,一旦装入事实表就不会再更新,他是事务事实表的补充。用来记录有规律的,固定时间间隔的业务累计数据,通常粒度比较高。
累计快照事实表:用来记录具有时间跨度的业务处理过程的整个过程的信息,每个生命周期一行,通常这类事实表比较少见。
注意: 事实表设计的时候,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。
2.2.维度表
维度表,一致性维度,业务过程的发生或分析角度,我们主要关注下退化为度和缓慢变化维。
退化维度
在维度类型中,有一种重要的维度称为退化为度,这种维度指的是会直接把一些简单的维度放在事实表中,退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着至关重要的概念,退化维度一般可在分析中用来做分组使用。
缓慢变化维
维度的属性并不是始终不变的,它会随着时间的流式发生缓慢的变化吗,这种随着时间发生变化的维度我们一般称之为缓慢变化维。
缓慢变化维三种处理方式:
1.直接覆盖原值
2.增加维度行
做拉链表
3.增加属性列
3.粒度
用于确定某一事实表中的行表示什么,是最小活动单元或不同维度组合,即业务细节程度。
4.维度建模流程
选择业务过程 - > 声明粒度 -> 确定维度 - >确定事实 ,
声明粒度: 为业务最小活动单元或者不同维度组合。以供同粒度从多个组织业务过程合并度量的事实表称为合并事实表,需要注意的是,来自多个业务过程的事实合并到事实表时,它们必须具有同等级的粒度。
- 需求收集
收集业务需求,在开始维度建模之前,需要理解业务需求,以及作为底层数据源的实际情况。通过与业务方沟通交流,查看现有报表等来发现需求。用于理解他们的基于关键性能指标,决策制定流程,支持分析需求的目标。同时,数据根据实际情况可通过与后端系统开发同事交流,了解访问数据可行性。
- 业务过程
选择业务过程,业务过程时组织完成的操作型活动,理清业务过程,就是需要建立或获取性能度量,饼转换为事实表中的事实。多数事实表关注某一业务过程的结果,过程的选择非常重要,因为过程定义了特定的设计目标以及对粒度,维度,事实的定义。
- 声明粒度
声明粒度,声明粒度是维度设计的重要步骤,粒度用于确定某一事实表中的行表示什么。在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须域定义的粒度保持一致。在从给定的业务过程获取数据时,原子粒度时最低级别的粒度。强烈建议从关注原子级别粒度数据开始设计,因为原子粒度数据能够承受无法预期的用户查询。
- 确认维度
确认维度(描述环境),维度提供围绕某一业务过程事件所涉及的人物,时间,地点,原因维度表包含分析应用所需要的用于过滤及分类事实的描述属性。牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开来。
- 确认事实(用于度量)
事实,涉及来自业务过程事件的度量,基本上都是以数据值表示,一个事实表行与按照事实表。