|
|
|
|
移动端

2.3 维度表技术基础

《数据仓库工具箱(第3版)--维度建模权威指南》第2章Kimball维度建模技术概述,本章内容出自这些设计模式的发明者。我们并不期望您一开始就从头到尾阅读本章,但希望您能将本章作为所提供技术的参考。本节为大家介绍维度表技术基础。 南

作者:王念滨/周连科/韦正现 译来源:清华大学出版社|2015-12-10 17:06

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.3  维度表技术基础

本节所介绍的技术应用于所有维度表。每一章都会讨论和描述维度表。

2.3.1  维度表结构

每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。操作代码与指示器可作为属性对待,最强有力的维度属性采用冗长的描述填充。维度表属性是查询及BI应用的约束和分组定义的主要目标。报表的描述性标识通常是维度表属性领域值。

2.3.2  维度代理键

维度表中会包含一个列,表示唯一主键。该主键不是操作型系统的自然键,由于需要跟踪变化,因此若采用自然键,将需要多个维度行表示。另外,维度的自然健可能由多个源系统建立,这些自然键将出现兼容性问题,难以管理。DW/BI系统需要声明对所有维度的主键的控制,而无法采用单一的自然键或附加日期的自然键,可以为每个维度建立无语义的整型主键。这些维度代理键是按顺序分配的简单整数,以值1开始。每当需要新键时,键值自动加1。日期维度不需要遵守代理键规则,日期维度是高度可预测的且稳定的维度,可以采用更有意义的主键。参见2.3.10小节。

2.3.3  自然键、持久键和超自然键

由操作型系统建立的自然键受业务规则影响,无法被DW/BI系统控制。例如,如果雇员辞职,然后重新工作,则雇员号码(自然键)可能会发生变化。数据仓库希望为该雇员创建单一键,这就需要建立新的持久键以确保在此种情况下,雇员号保持持久性不会发生变化。该键有时被称为持久性超自然键。最好的持久键其格式应该独立于原始的业务过程,并以整数1开始进行分配。多个代理键与某一个雇员关联时,若描述发生变化时,持久键不会变化。

2.3.4  下钻

下钻是商业用户分析数据的最基本的方法。下钻仅需要在查询上增加一个行头指针。新行的头指针是一个维度属性,附加了SQL语言的GROUP BY表达式。属性可以来自任何与查询使用的事实表关联的维度。下钻不需要预先存在层次的定义,或者是下钻路径。参见2.4.3小节。

2.3.5  退化维度

有时,维度除了主键外没有其他内容。例如,当某一发票包含多个数据项时,数据项事实行继承了发票的所有描述性维度外键,发票除了外键外无其他项。但发票数量仍然是在此数据项级别的合法维度键。这种退化维度被放入事实表中,清楚地表明没有关联的维度表。退化维度常见于交易和累计快照事实表中。

2.3.6  非规范化扁平维度

一般来说,维度设计者需要抵制由多年来操作型数据库设计所带来的对规范化设计的要求,并将非规范化的多对一固定深度层次引入扁平维度行的不同属性。非规范化维度能够实现维度建模的双重目标:简化及速度。

2.3.7  多层次维度

多数维度包含不止一个自然层次。例如,日历日期维度可以按照财务周期层次从天到周进行划分,也可能存在从天到月再到年的层次。位置密集型维度可能包含多个地理层次。所有这些情况下,在同一维度中可以存在不同的层次。

2.3.8  文档属性的标识与指示器

令人迷惑的缩写、真/假标识以及业务指标可以作为维度表中文本字词含义的补充解释。操作代码值所包含的意义应分解成不同的表示不同描述性维度属性的部分。

2.3.9  维度表中的空值属性

当给定维度行没有被全部填充时,或者当存在属性没有被应用到所有维度行时,将产生空值维度属性。上述两种情况下,我们推荐采用描述性字符串替代空值。例如,使用Unknown或Not Applicable替换空值。应该避免在维度属性中使用空值,因为不同的数据库系统在处理分组和约束时,针对空值的处理方法不一致。

2.3.10  日历日期维度

连接到实际事实表的日历日期维度,使得能够对事实表,按照熟悉的日期、月份、财务周期和日历上的特殊日期进行导航。不要指望能够用SQL计算复活节,但可以在日历日期维度上寻找复活节。日历日期维度通常包含许多描述,例如,周数、月份名称、财务周期、国家假日等属性。为方便划分,日期维度的主键可以更有意义,例如,用一个整数表示YYYYMMDD,而不是用顺序分配的代理键。然而,日期维度表需要特定的行表示未知或待定的日期。若需要更详细的精确度,可以在事实表中增加不同的日期时间戳。日期时间戳并不是维度表的外健,但以单独列的形式存在。如果商业用户按照当天时间(time-of- day)属性进行约束或分组,例如,按当天时间或其他数字分组,则需要在事实表上增加一个"当天时间(time-of-day)"维度外键。

2.3.11  扮演角色的维度

单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度。例如,事实表可以有多个日期,每个日期通过外键表示不同的日期维度,原则上每个外键表示不同的日期维度视图,这样引用具有不同的含义。这些不同的维度视图(唯一的属性列名)被称为角色。

2.3.12  杂项维度

事务型商业过程通常产生一系列混杂的、低粒度的标识和指示器。与其为每个标识或属性定义不同的维度,不如建立单独的将不同维度合并到一起的杂项维度。这些维度,通常在一个模式中标记为事务型概要维度,不需要所有属性可能值的笛卡尔积,但应该只包含实际发生在源数据中的合并值。

2.3.13  雪花维度

当维度表中的层次关系是规范的时,低粒度属性作为辅助表通过属性键连接到基本维度表。当这一过程包含多重维度表层次时,建立的多级层次结构被称为雪花模式。尽管雪花模式可精确表示层次化的数据,但还是应该避免使用雪花模式,因为对商业用户来说,理解雪花模式并在其中查询是非常困难的。雪花模式还会影响查询性能。扁平化的、非规范的维度表完全能够获得与雪花模式相同的信息。

2.3.14  支架维度

维度可包含对其他维度的引用。例如,银行账户维度可以引用表示开户日期的维度。这些被引用的辅助维度称为支架维度。支架维度可以使用,但应该尽量少用。多数情况下,维度之间的关联应该由事实表来实现。在事实表中通过两个维度的不同外键相关联。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Linux服务器安全策略详解

Linux主要用于架设网络服务器。如今关于服务器和网站被黑客攻击的报告几乎每天都可以见到,而且随着网络应用的丰富多样,攻击的形式和方法...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊