第一章 维度建模初步
数据仓库或者商业智能首先应该考虑的是业务需求
数据仓库或者商业智能的项目需要数据库管理员+商业分析师
1.1数据获取与数据分析的区别
数据获取:通过操作型系统记录数据,后者手工导入数据库中
数据分析:对记录在操作型系统的数据进行汇总、加工,对于操作过程是否正确给予检查
1.2数仓和商业智能的目标
- 简单快捷:数据要让业务人员一看就明白;数据结构与标识符合业务用的思维过程和词汇;业务用户能够以各种形式分割和合并数据;访问数据的工具要简单易用;查询反馈快速。
- 一致约束:公共标识和定义,不同数据源共用;
- 适应变化:已经存在的数据不应在发生变化后被改变或被破坏
- 及时展现:确保数据的质量
- * 信息安全:做好访问控制
- * 用户接受:满足用户的需求
1.3 维度建模简介
维度能够使——用户理解发布的数据;提供高效的查询。
维度模型不是必须满足3NF。数据库中满足3NF是为消除冗余。规范化的3NF用于操作型过程。对于BI的查询将耗尽数据库的资源。因此规范化建模方法不适用于BI的构建。
1.3.1 星型模式与OLAP多维数据库
在关系数据库中实现的维度模型称为星型模型。
在多维数据库中实现的维度模型称为OLAP数据库。
1.3.2 用于度量的事实表
【事实】--业务度量。通常是连续值,区分是维度还是事实的问题。唯一的文本数据否则放入维度表。事实表行多列少。事实表通过FK(外键)与维度表中的主键关联。可以通过维度表建立连接与事实表访问。通常几个维度一起唯一标识每个事实表的行。
【最实用的事实】--数值类型、可加类型、半可加(账户结余,不能按时间维度汇总)、不可加(单位价格)@计数或者平均数@
【粒度】--事实表中每行中的数据,同一事实表中的所有度量行必须具有相同的粒度。分类:事务、周期性快照、累计快照。最常见的是事务粒度事实表。
使用集中的数据仓库,确保整个企业使用一致的数据。
1.3.3 描述环境的度量表
维度表中包含与业务过程度量事件有关的文本环境。【谁、什么、何时、如何、为什么】
每个维度表只有一个主键,用于和事实表连接。
维度表中的属性,可以用作查询、分组、报表标识的主要来源。按照品牌查销售额,要查看的品牌必须存在于维度属性中。
维度表中的属性关系到数仓的完整性、一致性、可用性、可理解性。提供分片和分块的能力。
维度表中尽量不是用代码,而使用文字描述。业务含义明确的或者需要与后台交互的操作码,需要做文本描述。例如不同的位数的数字具有含义,就可以将其拆分以不同的维度属性展现。
维度表允许冗余,可以存在多对一的关系。
1.3.4 星性模式中维度与事实的连接
星型连接:维度模型表示每个业务过程包含事实表,事实表存储数值化度量,围绕事实表的是多个维度表。
维度模式
1、简单和对称
2、性能优势:数据库引擎首先处理多重索引的维度表,然后将满足用户约束的维度表关键字与事实表通过笛卡尔积连接,优化器扫描一遍多重连接查询
3、适于变化:每个维度在事实表中都有对应的入口,
强调:粒度最小的数据或原子数据具有最多的维度
第2章 维度建模技术概述
2.1 基本概念
2.1.1 收集业务需求与数据实现
业务过程+数据基础
2.1.2 协作维度建模
维度模型不应该由不懂业务的人来实现
2.1.3 维度设计过程
过程--表名;粒度--列名;维度--示例领域值;事实--业务规则
2.1.4 业务过程
操作型活动;多数事实表关注过程结果;每个业务过程对应企业数据仓库总线的一行。
2.1.5 粒度
在选择维度或事实前必须声明粒度,必须与粒度保持一致。定义了事实表的粒度,则事实表能表达的数据详细程度就确定了。例如:销售订单上的每个物料行。
事实表的粒度越小,能记载的信息就会越多。
高粒度的事实表,例如:每月销售订单的总金额。具有较少的维度,称之为聚集事实表,与原子事实表一起使用。
同一事实表不要混用不同的粒度
2.1.6 描述环境的维度
5W1H,whowhatwhenwherewyhow,一般属于文本型描述,粒度的控制能够区分不同的维度。
2.1.7 用于度量的事实
事实基本上都是数量值,是对业务过程的度量,所有的事实必须与声明的粒度保持一致。
2.1.8 星型模式和OLAP多维数据库
星型模式:建立在关系数据库管理系统上的多维结构,事实表——主键/外键——维度表
多维数据库:建立在多维数据上的多维结构。来源于关系型星型模式,维度属性、事实表;XMLA
2.1.9 方便的扩展到维度模型
维度模型对于数据关系变化具有灵活的适应性。
事实与存在的事实表粒度一致,可以创建新列
新的外键列,可以关联新的维度到事实表
维度表可以新建列,添加属性
可以使事实表的粒度更原子化,方法是在维度表上增加属性,然后重置事实表
2.2 事实表技术基础
2.2.1 事实表结构
事实表不受产生的报表影响;事实表始终包含外键,用于关联与之相关的维度;包括可选的退化维和日期时间戳
查询的目标是基于事实表开展计算和聚集操作
退化维:当一个维度没有数仓需要的任何数据的时候,就可以退化此维度。例如订单的编号应该放入事实表,而不需要做一个维度表。可以减少维度的数量,简化数仓的模式,简单的模式可以提高查询的性能。