使用BO DI处理 SCD2维表

摘要:本文首先介绍了缓慢变化维的定义、三种处理方式。以后以员工维表数据为例,详细说明如何使用BO DI实现SCD2维表的ETL。最后讲解了SCD2维表如何使用。spa

 

1 缓慢变化维简介

某些维度的属性会随着时间缓慢变化,这种维度被称为缓慢变化维(Slowly Changing Dimension,SCD)。举个例子,跨国企业的员工可能会在不一样区域间调动工做,但两次调动之间的时间间隔不会过短,所以员工的所属区域属性在缓慢变化,员工维是一个缓慢变化维。代理

 

在数据仓库中缓慢变化维如何建模,如何ETL呢?下面就以员工维表为例介绍三种经常使用的SCD处理方式。ci

1.1 SCD1:更新旧数据

SCD1 方式直接修改维度记录的属性值,维度属性表示员工当前状态。开发

 

假设企业内每一个员工都隶属于某个地区,张三原属于亚洲地区。员工维表最初存储的数据以下表:it

 

EMP_ID / 代理键io

EMP_CODE / 员工代码table

EMP_NAME / 员工姓名基础

REGION / 所属地区引用

1方法

A001

张三

Asia

 

    其中EMP_ID 是员工维表的主键,用于和事实表关联;EMP_CODE是员工代码,惟一地标识每位员工;REGION即员工所属地区。

 

如今因业务须要,张三被派驻到非洲地区了。在SCD1方式中,将张三的地区属性直接更新为"Africa",其他字段不变,事实表所引用的EMP_ID也无需变化。下表为员工维表修改后的状况,只有张三的所属地区属性被更新,维度记录表示张三当前的状态。

 

EMP_ID / 代理键

EMP_CODE / 员工代码

EMP_NAME / 员工姓名

REGION / 所属地区

1

A001

张三

Africa

 

SCD1是处理缓慢变化维最简单的方法,只有维表的属性字段须要修改,事实表数据不受影响。SCD1的缺点在于丢失了维度属性的历史数据;此外与变化属性有关的汇总数据必须从新计算,不然汇总与明细数据将没法对应。

 

维度属性的缓慢变化是否须要在数据仓库中体现是根据分析需求而定的。这类需求在调研阶段很容易被业务用户忽略,所以建模人员应检查每一个维度属性是否有变化的可能,以及是否有分析历史信息的须要。不要想固然地把SCD1做为默认的维度处理方法。

1.2 SCD2:增长新记录

    SCD2方式使用新记录存储更新的维度信息,可以保存维度历史信息,所以是最主要的缓慢变化维处理方式。

 

咱们继续使用在区域间调动工做的例子。张三于2007年5月从亚洲调动到非洲后,使用SCD2方式存储的维表以下所示:

 

EMP_ID / 代理键

EMP_CODE / 员工代码

EMP_NAME / 员工姓名

REGION / 所属地区

1

A001

张三

Asia

2

A001

张三

Africa

 

张三原有记录不变,增长一条新记录做为张三最新的信息。新记录的所属地区字段值为"Africa",新记录的EMP_ID字段值是自动生成的代理键。事实表中张三2007年5月以前的事实数据使用旧EMP_ID(1),2007年5月以后的事实数据使用新记录的EMP_ID(2)。

 

SCD2方式实际上存储了同一员工在不一样时间的多个版本的信息,自动生成的EMP_ID能够惟一地标识不一样版本,而逻辑上惟一的EMP_CODE显示了同一员工不一样版本信息间的联系。

 

须要注意的是,SCD2维表与事实表关联时无需附加任何日期时间条件,由于在抽取事实数据时就已经选择了与事实数据时间相匹配的维度EMP_ID。在SCD2维表中能够加入"信息生效时间戳"和"信息失效时间戳"两个字段,经过这两个字段就能够还原出任意时间点员工信息的快照。在SCD2维表中还能够加入"当前有效信息标志",便于查询出最新版本的维度信息。

1.3 SCD3:增长新数据列

SCD3方式使用新数据列存储更新的维度信息,可以保存有限的维度历史信息。

 

    仍旧用张三调动所属区域的例子,使用SCD3方式存储的维表以下所示:

 

EMP_ID / 代理键

EMP_CODE / 员工代码

EMP_NAME / 员工姓名

REGION / 所属地区

REGION_PRIOR / 以前的所属地区

1

A001

张三

Africa

Asia

 

    员工维表增长了一列REGION_PRIOR,此列存储张三的旧所属地区属性"Asia",而REGION字段则存储新所属地区属性"Africa"。

 

    有些分析要求同时按维度的新旧属性查看事实数据。比较常见的例子是销售区域划分发生变化后,分析人员但愿既能按划分后的区域查看事实数据,也能按划分前的区域查看。只有SCD3能知足此类需求。 

1.4 小结

以上是对三种SCD方式的介绍。这三种方式的出场顺序没有任何含义,不表明谁好谁差。三种方式各有优劣,开发者应该根据数据的特色、分析的要求来选择。

 

以上述三种SCD方式为基础,还能够造成多种混合SCD方法,使维度数据知足更特殊的分析要求。本文不详细介绍了,深刻了解能够参考《Data warehouse toolkit》,p102-105,Hybrid Slowly Changing Dimension Techniques。

相关文章
相关标签/搜索