由机构的业务过程和支持他们的业务源系统来捕捉的。常以数值形式出现,以此称为“事实”
上下文(维)就是解释度量中数值的具体含义,上下文是围绕这度量存在的,只有当事实被记录时上下文才为真。上下文被直观的分割成多个独立的逻辑块,我们称为“维”。维度描述了度量上下文的5W(who,what,when,where,why)信息,以及这些上下文是如何作用的。
维度建模的优点 可理解性,易于使用查询性能高修改的灵活度高 一、事实表 事实表: 存储了从机构业务活动或者事件中提炼出来的性能度量。术语 “事实” 就是指每种性能度量 ,事实表的一行对应一个度量值,所有度量值必须具有相同的粒度。 (1)事实表粒度都归属于三类:1. 事务粒度事实表 : 粒度是每一行对应一个事务,事务粒度是空间和时间的焦点,一个事务粒度上的度量必须在那个时刻为真。事务事实表在活动发生时才会插入行。
2. 周期快照事实表:能够按照一个定义良好的时间周期间隔来捕捉业务过程的执行情况,并且将这些描述装载到事实表中。
3. 积累快照事实表:用于描述业务过程(有明确的开端和结尾)中某个不确定时间跨度里的活动。
事务和快照是数据仓库的阴阳两面,事务是展现细节行为最为完整的视图,快照使我们迅速而容易的监视总体执行情况
(2)事实表的字段分类1. 可加性: 例如 条数,金额等
2. 半可加性 : 表示某一时间点的强度度量,例如: 库存量,账户结余
3. 完全不可加性: 例如: 单位价格,温度等
备注:百分比和比率这类数值都是非加性的,分子与分母都应该存在事实表中。可以利用数据存取工具计算出事实表中任何数据形式的比率,要记住,求取的是合计值的比率而不是比率的求和
二、维度表 (1) 时间维度每个事实表都是一个观测值的时间序列,事实表总是有一个或者多个日期维。下图显示了一个以天为粒度的标准日期维度表。
定义: 像订单号,发票号,机票号等这类编号正是设计父-子关系的事务处理系统时所用到的父标题键,不要忽略这些标题编号,而是应当直接添加到事实表中,标题票号可以作为维度键,但是如果像事务日期和客户维那样将标题记录信息分解成独立的维,那么这个维就没有其他属性了。我们称之为退化维。
退化维常常出现在事务事实表的设计过程中,本身就具有一种父-子关系的数据结构
例如:在Kimball提出的维度建模中,事实表应该保存最细粒度的数据。所以对于象销售单这样的事实表来说,需要销售单编号和产品来共同作为主键,而不能用销售日期、商场、产品等用来分析的维度共同作为主键。
(3)缓慢变化维 类型一: 覆盖维度属性类型二: 添加一个新的维度行类型三: 添加一个新的维度属性类型四: 微型维,添加一个新维,将经常变化的客户属性分解开放到独立的维度表中。原理就是将变化频率比较大的维度拆分出来单独作为维度表处理。关于SCD的详细介绍参照博客 缓慢变化维(SCD)的处理方法
(4)雪花型和支架 当冗余属性和译码都被转移到单独的表,并且通过人工键连接到原始表时,维就变成了雪花型了。 支架是一个统计属性集合,存在于每个辖区层次,一个辖区的所有客户都共享一个相同的属性集合。例如:
供应链管理: 一个产品的流动过程是从获取原材料到加工称为成品,再到最终交付给客户的整个过程,从原始起点到消费终点的整个流程的管理 唱唱是被称作“供应链管理”
(6) 一致性维度 一致性维度是企业数据仓库的“总线”, 一个强大的基于一致性维度的架构将一组业务过程紧密联系到一起就形成了企业数据仓库。一致性维度对于企业级的数据仓库极为重要,有以下优点:
1 一致性: 每个事实表都使用一致的过滤条件,产生的查询结果集合也被唯一地标识。2 集成: 首先单独查询每个事实表,最后将结果集连接到一个公共的维度属性上3 开发周期短:若一致性维度建立起来,后续的项目开发时间会极大的缩减,不需要重复创建相关的维度表