|
|
|
|
移动端

2.5 处理缓慢变化维度属性

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

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

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

2.5  处理缓慢变化维度属性

本节描述处理缓慢变化维度(Slowly Changing Dimension,SCD)属性的基本方法。对同一维度表中属性的变化,采用不同的变化跟踪技术是比较常见的方法。

2.5.1  类型0:原样保留

对类型0,维度属性值不会发生变化,因此事实表以原始值分组。类型0适合属性标记为"原型"的情况。例如,客户原始的信用卡积分或持久型标识符。该类型也适用于日期维度的大多数属性。

2.5.2  类型1:重写

对类型1,维度行中原来的属性值被新值覆盖。类型1属性总是反映最近的工作,因此该技术破坏了历史情况。尽管该方法易于实现且不需要建立额外的维度行,但使用时需小心,因为受此影响的聚集事实表和OLAP多维数据库将会重复计算。

2.5.3  类型2:增加新行

对类型2,将在维度表中增加新行,新行中采用修改的属性值。要实现该方式需要维度主键更具有一般性,不能仅采用自然键或持久键,因为采用该方法时经常会出现多行描述同样成员的情况。在为维度成员建立新行时,将为其分配新的主代理键,在修改发生后,将其作为所有事实表的外键,直到后续变化产生新维度键并更新维度行。

当变化类型2发生时,最少需要在维度行中增加三个额外列:①行有效的日期/时间戳列;②行截止日期/时间戳列;③当前行标识。

2.5.4  类型3:增加新属性

对类型3,将在维度表上增加新属性以保存原来的属性值,新属性值以变化类型1方式重写主属性。这种类型3变化有时称为替换现实。商业用户可以利用当前值或替换现实来分组或过滤事实数据。此种缓慢变化维度技术不太常用。

2.5.5  类型4:增加微型维度

对类型4,当维度中的一组属性快速变化并划分为微型维度时采用。此种情况下的维度通常被称为快速变化魔鬼维度。通常在包含几百万行的维度表中使用的属性是微型维度设计的候选,即使它们并不经常变化。变化类型4微型维度需要自己的唯一主键,基维度和微型维度主键从相关的事实表中获取。

2.5.6  类型5:增加微型维度及类型1支架

对类型5,用于精确保存历史属性值,按照当前属性值,增加报表的历史事实。类型5建立在类型4微型维度之上,并嵌入当前类型1引用基维度中的微型维度。这样才能确保当前分配的微型维度属性能够与基维度上其他微型维度一起被访问,而不必通过事实表连接。逻辑上说,应该将基维度及微型维度支架表示为展现区域中的单一表。每当当前微型维度分配发生变化时,ETL小组需要重写类型1微型维度引用。

2.5.7  类型6:增加类型1属性到类型2维度

与类型5类似,类型6也保存历史和当前维度属性值。类型6建立在类型2的基础上,同时嵌入维度行属性的当前类型1版本,因此事实行可以被过滤或分组,要么按照当度量发生时有效的类型2属性值,要么按照属性的当前值。在此环境中,当属性发生变化时,类型1属性由系统自动重写与特定持久键关联的所有行。

2.5.8  类型7:双类型1和类型2维度

类型7是用于支持过去和现在报表的最后一种混合技术。事实表可以被访问,通过被建模为类型1维度仅仅展示最新属性值,建模为类型2维度展示最新历史概要。同样的维度表确保实现两方面的观点。维度的持久键和主代理键同时存在事实表上。从类型1角度看,维度的当前标识被约束至当前,通过持久键与事实表连接。从类型2角度看,当前标识无约束,事实表通过代理键主键连接。此两种方法可以按照不同的视图部署到BI应用上。

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

51CTO读书频道二维码


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

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

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

读 书 +更多

系统分析师技术指南

本书对前沿而又成熟的系统分析技术和方法进行了讨论,包括CMM与过程改进、J2EE与NET平台、中间件及相关技术、应用服务器、Web 服务、数据...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊