缓慢变化维的类型以及处理方式

类型0:原样保留

对维度属性值不会发生变化的,事实表以原始值分组。例如持久型标识符和日期维度的大多数属性

类型1:重写

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

类型2:增加新行

新行中采用修改的属性值。要实现该方式需要维度主键更具有一般性,不能仅采用自然键或持久键,因为采用该方法时经常会出现多行描述同样成员的情况。在为维度成员建立新行时,将为其分配新的主代理键,在修改发生后将其作为所有事实表的外键,直到后续变化产生新维度键并更新维度行。当类型2发生时,最少需要在维度行中增加三个额外列:1、有效的日期/时间戳;2、截止日期/时间戳;3、当前行标识;

类型3:增加新属性

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

类型4:增加微型维度

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

类型5:增加微型维度以及类型2支架

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

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

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

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

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

你可能感兴趣的:(缓慢变化维的类型以及处理方式)