数据仓库工具箱 维度建模权威指南

读书开始日期: 2020-05-16 

 

1.数据仓库、商业智能及维度建模初步:

名词 : DW/BI  :数据仓库/商业智能

1.1 数据获取与数据分析的区别 :

操作型系统与DW/BI系统的比较 :

  操作型系统 DW/BI系统
作用 保存数据 使用数据
任务 确保组织能正常运转。 研究分析企业的运转,并对其性能评估。
优化的目的 使其能更快处理事务。 高性能地完成用户查询。
  一般一次处理一个事务。 搜索成千上万事务。
  不保留历史,只存最新。 保存历史

 

1.2 数据仓库与商业智能的目标 :

1. DW/BI系统要能方便的存取信息。

2.DW/BI系统必须以一致的形式展现信息。

3.DW/BI系统必须能适应变化。

4.DW/BI系统必须能及时展现信息。

5.DW/BI系统必须成为保护信息财富的安全堡垒。

6.DW/BI系统必须成为提高决策制定能力的权威和可信基础。

7.DW/BI系统成功的标志是业务群体接受DW/BI系统。

 

1.3 维度建模简介 :

维度建模是展现分析数据的首先技术,基于以下2个原因:

  1. 以商业用户可理解的方式发布数据。
  2. 提供高效的查询性能。

 不要求维度模型必须满足3NF。业界将3NF模型也称为实体-关系模型(ER模型)。

下面回顾下3NF :

  • 1NF : 数据库表的每一列都是不可分割的基本数据项。
  • 2NF:非主属性完全依赖于主键。
  • 3NF:属性不依赖于其它非主属性。

在关系数据库系统中实现的维度模型称为星型模式

在多维数据库系统中实现的维度模型称为OLAP

 

 

2.Kimball维度建模技术概述:

2.1 基本概念:

开始维度建模工作前,需要先了解业务需求源数据的情况。

维度建模设计主要涉及4个决策:

  • 选择业务过程;
  • 声明粒度;
  • 确认维度;
  • 确认事实。

业务过程是企业完成的操作型活动,每个业务过程对应企业数据仓库总线矩阵的一行。粒度用于确定某一个事实表中的一行代表什么,在选择维度或者事实前必须先确定粒度,因为每个获选维度或者事实必须与定义的粒度保持一致。维度表包含BI系统用于过滤及分类事实的描述型属性。事实表涉及来自业务过程事件的度量,基本上以数量表示。

星型模式是部署在关系型数据库上的多维结构,一般包含一个事实表和多个维度表。OLAP是部署在多维数据库上的多维结构,包括维度属性和事实表。

2.2 事实表基础:

事实表的行对应一个度量事件(从最细粒度来看)。事实表一般包含:日期/事件戳,退化维度键,与维度表关联的外键和数字度量。查询的目标是基于事实表开展计算和聚集操作。

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

  • 完全可加度量:针对所有维度可加
  • 半可加度量:只针对部分维度可加(例如差额)
  • 完全不可加度量:一些比例类完全不能相加(例如比率),这种度量处理方法是:尽可能存储完全不可加度量的完全可加分量(例如不存定点率,而存定点订单量和总订单量)。

 事实表可以存在空值度量,但是不能存在空值外键。

一致性事实:如果某些度量出现在不同事实表中,如果它们的定义一致,则必须保证它们的名称相同(那么,如果不同事实表的度量命名相同,则也应该保证它们的计算口径一致)。如果它们不兼容,则应该给它们不同的名字。

下面,介绍几种常见的事实表 : 

  • 事务事实表:事务事实表的一行对应空间或时间上某点的度量事件。
  • 周期快照事实表:周期快照事实表中每行汇总了发生在某一标准周期,比如一天、一个月、一年的多个度量事件。粒度是周期性的,而不是个体事务。
  • 累积快照事实表:汇总了发生在过程开始和结束之间可预测步骤内的度量事件。累积快照事实表中的一行代表一个订单,当订单产生时会增加一行,当管道过程发生时,累积事实表行被访问并修改。
  • 无事实的事实表:某些事件仅仅记录一系列某一时刻发生的多维实体。例如,在给定的某一行中,学生参加课程的事件(相关实体:时间、学生、课程、老师)。
  • 聚集事实表:是对原子粒度事实表数据进行简单的数字化上卷操作得到的。
  • 合并事实表:将来自多个过程的、以相同粒度表示的事实合并为一个单一的合并事实表,例如我做的搜索点击宽表。这样做会增加ETL压力,但是使用起来更方便。

2.3 维度表技术基础:

每个维度表包含单一的主键列,维度表通常比较宽。维度表属性是查询及BI应用的约束(Where条件)和分组(Group by 条件)定义的主要目标。

 维度代理键: 维度表的唯一键不能是操作型系统的自然键,这里有2个能想到的简单原因:(1)数仓中的维度表一般需要记录历史(那么如果还是操作型系统的自然键的话就重复了,需要另外加时间字段来区分)。(2)维度表可能来自于操作型系统的多个表。 所以一般数仓维度表的代理键是自己编的,可以为每个维度建立无语义的整型主键(最简单的是自增)。

持久键、超自然键 :由操作型系统建立的自然键容易受业务影响。例如,一个雇员离职后再入职,员工编号(自然键)都会变化。但是,这是同一个人,数仓希望保持维度键保持不变,这样就需要重新编号该键,有时也被称为持久性超自然键

非规范化扁平维度 : 维度设计者需要抵制由多年来操作型关系型数据库设计所带来的规范化设计(3NF)的要求,并将非规范化的多对一固定深度层次引入扁平维度行的不同属性,为了带来简化和速度

维度表中的空值属性:建议使用类似Unknown等字符来替代空值,避免空值出现维度表中。

扮演角色的维度: 单个物理维表可以被事实表引用多次,每个引用连接逻辑上存在差异的角色维度。例如,一个订单包含提单时间、客户支付时间等不同时间。

杂项维度:将不同维度合并到一起的杂项维度。

雪花维度:维度表中的层次关系是规范的时,低粒度属性作为辅助表通过属性键连接到基本维度表。当这一过程包含多重维度表层次时,建立的多层次结构被称为雪花模式。

支架维度 :维度可包含对其他维度的引用,例如银行账户维度包含开户日期(日期维度引用)。被引用的辅助维度称为支架维度。

 

2.4 一致性维度:

当不同的维度表具有相同的列名和领域内容时,称维度表具有一致性。利用一致性维度属性与每个事实表关联,可以将来自不同事实表的信息合并到同一张报表中。缩减维度:其实就是group by属性集合的子集。 跨表钻取:通过一致性维度关联不同查询。

企业数据仓库总线矩阵是用于设计并与企业数据仓库总线架构交互的基本工具。矩阵的行表示业务过程,矩阵的列表示维度。每个点表示维度与给定的业务是否存在关联关系。

2.5 缓慢变化维度(SCD):

类型0:维度表属性不会变化,原样保留即可。

类型1:重写,如果某个维度属性变化了,直接覆盖这一行。 这么做的缺点是未保存历史,那么在统计分析时,历史数据会有误。

类型2:增加新行,这种情况不能使用原有自然键做维度表主键(多行表示原来的一行,因为记历史了)。需要增加:(1)行有效日期;(2)行截止日期;(3)当前行标识(PK)。

类型3:

 

 

 

posted @ 2020-05-16 21:56  葛洪俊  阅读(1489)  评论(0)    收藏  举报