数据仓库建模(二):建模流程
- 说明
- kimball 维度建模
- 维度建模设计流程
说明
该系列的文章仅为记录以及《数据仓库工具箱(维度建模指南)》的读后心得和思考,如有异议,请留言
将某些事情以具体、有形的方式抽象成数据集展示出来是数仓建设的最终目的,因此数据模型一定要保持简单性的设计,如果从复杂的数据模型起步,最终将会导致模型过于复杂,从而导致查询性能低下。爱因斯坦曾经说过:“凡事应该尽量简单,直到不能再简单为止”。
– 《数据仓库工具箱(维度建模指南)》
kimball 维度建模
Ralph Kimball 是一位数仓建设领域的大师,《数据仓库工具箱(维度建模指南)》
这本书就是这位大师和另外一位大师 Margy Ross
创作的。
Kimball 所提出的这种维度建模理论,被大部分人接受并广泛使用,包括各个公司的一些建模方案都是基于这些理论实现的,虽然不知道 Kimball
这个名词。。。
该篇博客主要是对 Kimball 建模的流程做记录并分享自己的心得
维度建模设计流程
① 选择业务过程
业务过程是组织完成的操作类型活动,例如,获得订单、处理保险索赔、学生课程注册或每个月账单的快照等
获取事实一般是通过业务过程事件的建立或获取事实度量,并转换为事实表中的事实。业务过程的选择非常重要,因为业务过程定义了特定的设计目标以及对粒度、维度、事实的定义。每个业务过程对应企业数据仓库总线矩阵中的一行
② 声明粒度
粒度用于确定某一事实表中的行表示什么
在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致
在所有维度设计中强制实行一致性是保证 BI 应用性能和易用性的关键。在从给定的业务过程获取数据时,原子粒度是最低级别的粒度,一般是从原子级别粒度数据开始设计,因为原子粒度数据能够承受无法预期的用户查询。上卷汇总粒度对性能调整来说非常重要,但这样的粒度往往要猜测业务公共问题。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度。
③ 确认维度
维度是围绕业务过程中的事件,按照不同的维度去描述事实
维度表有时被称为数据仓库的 “灵魂” ,因为维度表包含业务分析的如口和描述性标识
④ 确认事实
一个事实表行对应一个度量事件,并且事实表行必须和声明的粒度保持一致。例如,在零售业务中,一个销售产品的数量与其总销售额的事实中,不允许让员工的工资存在与该事实中,因为这时的粒度不允许
⑤ 拓展维度模型
维度模型对数据关系发生变化要有灵活的适应性。当发生以下情况时,我们只需要更改 SQL
的查询语句就可以完成我们的目标查询
1. 当事实与存在的事实表粒度一致时,我们可以在事实表中创建新的列
2. 可以在事实表中创建新的外键列,然后与维度表进行关联,前提是维度列与事实表的粒度一致
3. 可以在维度表中创建新的列来增加属性
4. 可以使事实表的粒度更原子化,方法是在维度表上增加属性,然后以更细的粒度重置事实表,小心保存事实表及维度表的列名