在上一篇文章中咱们简单介绍了什么是维度建模以及维度建模的基本要素,这篇文章中咱们依然学习了解维度建模中的基本要素事实表和维度表的类型以及维度设计方法。首先里了解维度建模中的事实表类型,在依次介绍维度类型,一致性维度和一致性事实,维度设计方法。接下来进入正题。html
1、事实表 性能
事实表存储了从业务活动或事件提炼出来的性能度量,它主要包含维度表的外键和连续变化的可加性数值或半可加事实。事实表产生于业务过程当中而不是业务过程的描述性信息。它通常是行多列少,占据数据仓库大约90%的空间。在维度模型中也有表示多对多关系的事实表,其余都是维度表。 学习
一、事实表粒度spa
事实表的粒度是产生事实行数据的度量事件的业务定义。粒度肯定了事实表的业务主键, 事实表的全部度量值必须具备相同的粒度。 设计
二、事实表类型3d
2.一、事务事实表代理
它是面向事务的,其粒度是每一行对应一个事务,它是最细粒度的事实表也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度一般是每一个事务一条记录。一旦事务被提交,事实表数据被插入,数据就再也不进行更改,其更新方式为增量更新。htm
2.二、周期快照事实表blog
它是按照良好的时间周期间隔(天天,每周,每个月)来捕捉业务活动的执行状况,一旦装入事实表就不会再去更新,它是事务事实表的补充,而非替代。典型的例子如销售日快照表、库存日快照表等。周期快照事实表的粒度是每一个时间段一条记录,一般比事务事实表的粒度要粗,是在事务事实表之上创建的汇集表。周期快照事实表的维度个数比事务事实表要少,可是记录的事实要比事务事实表多。周期快照事实表的日期维度一般是记录时间段的终止日,记录的事实是这个时间段内一些汇集事实值。事实表的数据一旦插入即不能更改,其更新方式为增量更新。生命周期
2.三、累积快照事实表
它用于描述业务过程当中某个不肯定时间跨度里的活动,它随着业务活动的发生会不断的更新。累积快照事实表和周期快照事实表有些类似之处,它们存储的都是事务数据的快照信息。可是它们之间也有着很大的不一样,周期快照事实表记录的肯定的周期的数据,而累积快照事实表记录的不肯定的周期的数据。
累积快照事实表表明的是彻底覆盖一个事务或产品的生命周期的时间跨度,它一般具备多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。因为事实表中许多日期在首次加载时是不知道的,因此必须使用代理关键字来处理未定义的日期,并且这类事实表在数据加载完后,是能够对它进行更新的,来补充随后知道的日期信息。
举例来讲客户购买商品的整个过程记录:定货日期 预约交货日期 实际发货日期 实际交货日期 数量 金额 运费
在这个累积快照事实表中,记录的是购买货物的整个生命周期的数据,记录第一次产生时,实际发货日期和实际交货日期是不肯定的,须要用表示未知的代理关键字来代替。等实际发货后,须要对数据仓库中的这条记录进行更新操做,将实际发货日期补上。
三、事实表区别:
2、维度表
维度表是对业务过程的上下文描述,主要包含代理键、文本信息和离散的数字。它是进入事实表的入口,丰富的维度属性给出了对事实表的分析切割能力,它通常是行少列多。若是属性值是离散的,用于过滤和标记的,就放到维度表里,若是是属性值是连续取值,可用于计算的,就放到事实表中。
一、维度表类型
1.一、缓慢变化维
1)、类型1
字段值发生变化时覆盖原来的值。
2).类型2
字段值发生变化时会新增一行,从新分配代理键,每一行添加开始日期,结束日期,版本号,是否当前值。
3).类型3
每条记录会新增一列来标识变化前的值,发生变化时,把旧值放到新增的列中,把新值覆盖旧值。
4).混合类型
把上面的三种类型混合来使用。
1.2日期维
它是数据仓库必须有的维度,包含日期,日期所属的周,月,季度,年等信息。
1.3角色维
相同的维度表在维度模型中扮演不中的逻辑角色,通常经过建立视图来表示。
1.4杂项维
若是每一个属性值都不多,能够把这些维度的组合起来生成一个维度表。
1.5支架维
若是维度之间是一对多的关系或区别于原维度的多个描述性维度属性,能够建雪花型支架维度。
1.6多值维度桥接维
若是二个维度表是多对多的关系,可使用多值维度设计。
1.7微型维
一个大型维有些属性变化比较频繁,把这些属性单独生成一个微型维度表。
1.8缩小维
它是维度表的一个子集或部分属性。
1.9查找维
系统里代码表里维度信息。
1.10层次维
有些维度表是有层次结构的,能够经过视图生成树形结构的维度表。
还须要注意,手工维护的维表,有些数据不在业务系统里,须要业务用户手工维护的维度表。
3、维度建模核心:一致性维度和事实
企业数据仓库应该创建一致性维度和事实,而不是为每一个部门创建维度和事实。
3.一、一致性维度
维度一直是你们所熟知的,可是前面加上了“一致性”以后便成了数据仓库特有的一类维度表,其实一致性维度在表结构和属性都没有本质的区别,有一点的差别是数据仓库的星型模型会使得维度表有必定的冗余。那么一致性体如今哪里呢: 维度共享性。共享性体如今整个平台或整个部门共用维度,而不只仅只是单纯某个业务单独使用。 通常的维度并无把共享性做为一个共性的标准。然而在维度建模中,一致性维度将做为重心来作。数据仓库70%的工做量和复杂度是用在构建一致性维度。一致性维度将做用于数据仓库和数据集市甚至是OLAP。
3.二、一致性事实
指每一个度量在整个数据仓库中都是惟一的统计口径,为了不歧义,一个度量只有惟一的业务术语。一致性事实在创建多个数据集市时,完成一致性维度的工做就已经完成了一致性的80%-90%的工做量。余下的工做就是创建一致性事实。 一致性事实和一致性维度有些不一样,一致性维度是由专人维护在后台,发生修改时同步复制到每一个数据集市,而事实表通常不会在多个数据集市间复制。须要查询多个数据集市中的事实时,通常经过交叉探查来实现。 为了能在多个数据集市间进行交叉探查,一致性事实主要须要保证两点。第一个是KPI的定义及计算方法要一致,第二个是事实的单位要一致性。若是业务要求或事实上就不能保持一致的话,建议不一样单位的事实分开创建字段保存。
4、维度模型设计方法
维度建模方法就讲解到这里。下一篇咱们开始来数据仓库的ETL过程。本文中若有错误或误导的地方欢迎你们指出纠正。 但愿这篇文章可以给你们带来帮助,最后感谢你们的阅读。欢迎你们一块儿加入高效数据处理ETL交流群,一块儿讨论数据分析前ETL过程的问题,一块儿学习一块儿成长。
扫码加群: