|
|
|
|
移动端

2.8 高级维度技术

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

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

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

2.8  高级维度技术

本节介绍的技术涉及高级维度表模型。

2.8.1  维度表连接

维度表可以包含到其他维度表的引用。尽管此类关系可以采用支架维度建模实现,但某些情况下,存在于基本维度上的指向支架维度的外键的存在将导致基本维度爆炸性增长,因为支架表中的类型2变化强制需要在基本维度中对应处理类型2变化。如果通过将支架表中的外键放入事实表中而不是放置在基本维度表中,降低维度表之间的关联,则此类增长通常可被避免。该方法意味着发现维度之间的关联,仅需要通过遍历事实表,这是可以接受的,特别是当事实表示周期快照,其所有维度的所有键都会在每个报表周期内出现时。

2.8.2  多值维度与桥接表

经典维度模式中,每个与事实表关联的维度都有一个与事实表粒度一致的单一值。但是某些情况下,维度存在合理的多值。例如,某个病人接受了一次健康体检,可能同时出现多个诊断。在此情况下,多值维度必须通过一组维度键通过桥接表使一组中的每个诊断与事实表一行关联。

2.8.3  随时间变化的多值桥接表

多值桥接表可能需要基于缓慢变化类型2维度。例如,实现银行账户与单独客户的多对多关系的桥接表,通常必须基于类型2的账户与客户维度。在此情况下,为防止账户与客户之间的不正确连接,桥接表必须包含有效期和截止日期/时间戳,请求的应用必须约束桥接表,使其满足特定时刻以产生一致的快照。

2.8.4  标签的时间序列行为

数据仓库中几乎所有的文本都是维度表中的描述性文本。数据挖掘客户聚类分析通常产生文本化的行为标签,通常可以用作区分周期。在此情况下,跨时间范围的客户行为度量成为由这些行为标签构成的一种序列,该时间序列应该以位置属性被存储在客户维度中,包含可选文本串,构成完整的序列标签。行为标签在位置设计时建立,因为行为标签是复杂并发查询而不是数字计算的目标。

2.8.5  行为研究分组

有时可以通过执行多次迭代分析,来发现复杂的客户行为。在此情况下,将行为分析嵌入到BI应用,以约束所有客户维度的成员,获取复杂的行为,这样的做法是不现实的。复杂行为分析的结果,可以通过某些简单表获取,这些表称为研究分组,仅包含客户的持久键。在查询时,通过约束研究组表的列与目标模式中客户维度的持久键,该静态表可当成一种可应用于任何带有客户维度的维度模式过滤器。可以定义多个研究组,导出的研究组可以通过遍历、联合、设置差异等方式建立。

2.8.6  聚集事实作为维度属性

商业用户通常对基于聚集性能度量的客户维度感兴趣,例如,过滤去年或整个阶段所有花费超过一定数额的客户。选择聚集事实可以放入作为约束和作为行标识报表的目标维度。度量通常表示为维度表中的带状范围。维度属性表示聚集性能度量将增加ETL处理的负担,但是可以方便BI应用层的分析功能。

2.8.7  动态值范围

动态值范围报表由一系列报表行头组成,这些报表行头为目标数字化事实定义了范围不断变化的集合。例如,一个银行的公共值范围报表包含带有标签的多个行,例如,"从0到$10的平账","从$10.01到$25的平账"等等。此类报表是动态报表,因为每次查询时都定义了特定的行头,而不是在ETL过程中定义的。行定义可以通过在小值范围维度表实现,通过大于连接或小于连接而与事实表实现连接,定义可以仅存在于SQL CASE语句中。该值范围维度方法可能会获得更高的性能,特别是针对列数据库,因为CASE语句方法包含针对几乎所有事实表的无约束关系扫描。

2.8.8  文本注释维度

与其将自由注释作为事实表的文本度量,不如将它们存储于事实表之外的不同的注释维度(或作为维度属性,每个事务一行,但需要注释的粒度满足唯一事务的数目),使该注释维度对应事实表中的一个外键。

2.8.9  多时区

为在多时区应用中获得通用标准时间以及本地时间,应该在受影响的事实表中设置双外键,用以连接两个不同角色的日期(和可能的当天时间(time-of-day))维度表。

2.8.10  度量类型维度

有时当事实表每行包含一长列稀疏存储的事实时,可以建立度量类型维度,通过度量类型维度将事实表行变成单一通用事实。我们一般不推荐采用该方法。尽管它消除了所有空的事实表列,但按照每行中占用列的平均数量,这增加了事实表大小,并且使内部列的计算更加困难。当潜在事实的数量达到极限(几百个),但是没有多少需要应用到任何给定事实表行时,可以采用该技术。

2.8.11  步骤维度

序列过程(例如,Web页事件)通常在事务事实表中用不同行表示过程中的每一步。为了告知哪个步骤满足整个会话,使用步骤维度展示当前步骤的步骤号以及完成该会话共有多少步骤。

2.8.12  热交换维度

当同一个事实表与相同维度的不同拷贝交替搭配时,可使用热交换维度。例如,某事实表包含股票行情,可以同时展示给不同的投资人,不同的投资人对不同的股票有不同的属性要求。

2.8.13  抽象通用维度

一些建模者喜欢使用抽象通用维度。例如,他们的模式包含单一通用位置维度而不是关于商店、仓库和客户维度的嵌入式的地理属性。类似地,其人员维度包含雇员、客户和供应商行,因为尽管每种类型都包含显然不同的属性,但他们都是人。在维度建模时应尽量避免使用抽象通用维度。与每种类型关联的属性集合通常存在差异。如果属性是通用的,例如,地理州,应将它们唯一标识以区分商店所在州与客户所在州。最后,将所有不同的位置、人员、产品放入单一维度将产生大型的维度表。数据抽象可以适当运用于操作型源系统或ETL处理,但对查询性能有负面影响,并会对维度模型的易读性带来负面影响。

2.8.14  审计维度

当事实表行是在ETL之后建立时,建立包含当时已知的ETL过程元数据的审计维度是很好的方法。简单的审计维度行可包含一个或多个数据质量的基本标识,也许来自对错误事件模式的检验,记录数据处理是发现的数据质量问题。另外,使用审计维度属性可以包含描述建立事实行或ETL执行时间戳的ETL代码版本环境变量。这些环境变量对审计意图特别有用,因为它们确保BI工具下钻以确定哪些行是由哪些ETL软件版本建立的。

2.8.15  最后产生的维度

有时来自操作型业务过程的事实在关联维度内容前,以分钟、小时、天或周产生。例如,在实时日期发布环境下,订单消耗行可能会到来,显示客户提交的购买特定商品的自然键。在实时ETL系统中,该行必须提交到BI层,即使客户或产品还不能立即确定下来。在此情况下,将建立特殊的维度行,包含作为属性的未分解的自然键。当然,这些维度行必须包含通用未知值,用于多数描述性列;推测适当的维度内容将会从源获得。当这些维度内容最后获得时,占位维度行用类型1重写。当采用类型2维度属性的追溯性变化发生后,最后达到的维度数据也会产生。在此情况下,新行需要插入维度表中,然后需要重新定义关联事实行。

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

51CTO读书频道二维码

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

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

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

读 书 +更多

构件中国:面向构件的方法与实践

本书通过丰富的案例研究示例,阐明了构建面向构件软件的最重要因素:概念、技术、规范、管理以及分析与设计过程。 本书的涵盖范围包括:面...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊