数据仓库维度建模入门

对数据分析越来越深入,越来越发现数据标准化的重要性,再高明的数据分析技术,没有规范统一的数据仓库,也是“巧妇难为无米之炊”。遂从头再对数据仓库技术进行一边梳理。

1. 维度建模理论概要

1.1 维度设计的主要流程

1.1.1 选择业务过程

业务过程是组织完成的操作性活动,例如:获得订单、处理保险索赔、学生课程注册或每个月每个账单的快照等。业务过程事件建立或获取性能度量,并转换成事实表中的事实。过程定义了特定的设计目标以及对粒度、维度、事实的定义。

1.1.2 声明粒度

粒度用于确定某一个事实表中的行表示什么。粒度声明是设计必须履行的合同。在选择维度或事实前必须声明粒度,某个候选维度或事实必须与定义的粒度保持一致。在所有维度设计中强制实行一致性是保证BI应用性能和易用性的关键。

原子粒度是最低级别的粒度。建议从关注原子级别粒度数据开始设计。同时,上卷汇总粒度对性能调整来说非常重要。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度。

1.1.3 确认维度

维度提供围绕某一业务过程事件所涉及的“谁、什么、何处、何时、为什么、如何”等背景。维度表包含BI应用所需要的用于过滤及分类事实的描述性属性(这也是识别维度的重要依据)。当与跟定的事实表行关联时,任何情况下都应使维度保持单一值

数据管理与维度表的开放是数据仓库建设的主要工作。

1.1.4 确认事实

事实涉及来自业务过程事件的度量,基本上都是以数量值表示。一个事实表行与按照事实表粒度描述的度量时间之间存在一对一的关系,事实表对应的是一个物理可观察的事件。所有事实只允许与声明的粒度保持一致。

1.2 事实表技术基础

1.2.1 事实表结构

事实表中存储的是现实世界中所发生的操作性事件所产生的可度量数值。从最低级的原子粒度来看,事实表中一行记录对应现实世界中的一个度量事件。

事实表的设计完全依赖于物理活动,不受可能产生的最终报表的影响。事实表总是包含外键,用于关联与之相关的维度,也包含可选的退化维度建和日期/时间戳。查询请求的主要目标是基于事实表开展计算和聚集操作。

1.2.2 可加、半可加、不可加事实

事实表中的数字度量可划分为三类:

  • 可加事实

最灵活、最有用的事实是完全可加,可加性度量可以按照与事实表关联的任意维度汇总。

  • 半可加事实

半可加度量可以对某些维度汇总,但不能对所有维度汇总。差额是常见的半可加事实。

  • 不可加事实

不可加事实对所有的维度不可加,例如比率。

1.2.3 事实表中的空值

事实表中的度量值可以存在空值,因为所有的聚集函数(SUM、COUNT、MIN、MAX、AVG)均可以对空值进行计算。

事实表的维度外键不能存在空值,否则会导致违反参照完整性的情况发生。关联的维度表必须用默认行(代理键)而不是空值外键表示未知的或无法应用的情况

1.2.4 事实表的三种标准类型

  • 事务事实表

事务事实表的一行对应空间或时间上某点的度量事件。原子事务粒度事实表是维度化及可表达的事实表,这类健壮的维度确保对事务数据的最大化分片和分块。

  • 周期快照事实表

周期快照事实表中的每行汇总了发生在某一个标准周期,如某一天、某周、某月的多个度量事件。粒度是周期性的,而不是个体事务。即使周期内没有活动发生,也会在事实表中为每个事实插入包含0或空值的行。周期快照事实表的一个典型的应用场景是库存

  • 累积快照事实表

累积快照事实表的行汇总了发生在过程开始和结束之间可预测步骤内的度量事件。管道或工作流过程(例如,履行订单或索赔过程)具有定义的开始点,标准中间过程,定义的结束点,它们在此类事实表中都可以被建模。通常在事实表中针对过程中的关键步骤都包含时间外键。累积快照事实表中的一行,对应某一具体的订单,当订单产生时会插入一行。但管道过程发生时,累积事实表行被访问并修改(这是很特别的)。

1.3 维度表技术基础

1.3.1 维度表结构

每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的技术定义应与事实表行完全对应。

维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。操作代码与指示器可作为属性对待,最强有力的维度属性采用冗长的描述填充。

维度表属性是查询及BI应用的约束和分组定义的主要目标。报表的描述性标识通常是维度表属性领域值。

1.3.2 维度代理键

维度表中会包含一个列,表示唯一主键。该主键不是操作性系统的自然间。 维度主键通常是无意义的整型主键,是按顺序分配的简单整数,以值1开始,每次分配自动加1。但日期维度不需要遵守代理键规则。

1.3.3 一致性维度

当不同的维度表属性具有相同的列名和领域内容时,称维度表具有一致性。

1.3.4 缓慢变化维度

类型:

  1. 原样保留

  2. 重写

  3. 增加新行

  4. 增加新属性

  5. 增加微型维度

  6. 增加微型维度及类型1支架

  7. 增加类型1属性到类型2维度

  8. 双类型1和类型2维度

    原文作者:qiulin
    原文地址: https://segmentfault.com/a/1190000009014636
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞