? Slowly Changing Dimension 简称 SCD 是数据仓库建模和处理过程中一个很重要的概念,因为数据仓库系统的主要功能是对历史数据进行汇总和分析,所以保存历史记录的变化是很重要的。SCD是用来处理 Dimension 表变化的一种设计理论。SCD 通常使用三种类型: 类型1 ?(Type 1):??覆盖旧记录。有些Dimension 表从业务上讲不需要保存历史记录或者只需要对原有记录进行修改。比如说 Customer 表中有 Customer 地址的属性,原有的地址输入错误我们需要修改这个属性而不需要对原有的错误地址进行保存,这个时候就可以使用 SCD Type 1。需要注意的是 SCD 是一种修改 Dimension 表记录的方法,而不是设计 Dimension 结构的方法,但是在设计 Dimension 表的结构的时候我们通常需要考虑这个 Dimension 表是否需要处理 SCD 的三种类型。 类型2 ?(Type 2):??增加新记录。Type 2 是精确捕获Dimension 表历史变化的一种标准的方法,它通过对数据源表的Change Data Capture (CDC) 机制来捕获数据源的变化,然后在 Dimension 表中插入一个新的记录再使旧的相应的记录实效。通常能够处理 SCD Type2 的表包含下面的字段: 在实际的设计中不一定全部包括上面的字段,但是 Start Date, End Date 和 Active Flag 是一定要包括的。如下图所示的一个例子 Rob Walters 有两条记录,第一条记录从 1998-01-05 至 2000-06-30 在 Tool Design 部门工作,第二条记录显示从 2006-06-30 至今 (EndDate 为空) 在 Engineering 部门工作,而 Status 列跟据 EndDate 是否为空表示为 ‘Current’? 或者 Null,如果为 Null, 则表示该记录已经过期。通常,Start Date 和Data Changed 采用系统时间,或者直接将该属性的默认值设计为系统时间;记录的终止时间默认值是NULL 或者是 12-31-9999 (当前数据属性的最大值),取决于 Cube 中的设计。 类型3??(Type 3):??增加新字段。有时候我们需要一种简便的方法来在一条记录上跟踪 Dimension?表属性的变化,也就是说在当前的记录上同时显示当前的属性值和过去的属性值,这时候我们就需要增加一个新的字段来处理这种需要,如下图所示: 在图中,使用 PreviousDepartmentName 来显示当前DepartName 的上一个值。 在实际应用中 Type 1 和 Type 2 是最为常用的,也常常会在同一个 Dimension 表中的不同的属性上实现不同的 SCD,? 比如说在上图的例子中,如果 LastName 输入错误了,就不需要对错误的记录进行保存,直接用正确的值替换,这就是 Type 1; 如果DepartmentName 改变了,则需要保存它的历史记录,就是 Type 2; 所以这种处理方法也叫做?Hybrid SCD – 混合型 SCD。需要注意的是,在实现 SCD Type 1 的表上,如果这个Dimension 表同时包含了处理 SCD Type 2 的结构,我们需要将所有的该属性的值进行修改。比如在图中,如果要修改 Rob Walters 的 LastName, 则需要将所以的他的记录全部修改,不论记录的Status 值是什么。 实现 SCD, 需要在数据源上实现有效的 Changing Data Capture (CDC)机制,我的下一篇文章将介绍 CDC 的一些基本知识。
详细解决方案
数据仓库缓慢变更维的三种方式
热度:401 发布时间:2016-05-05 16:04:18.0
相关解决方案
- 大牛们~新手求教~数据仓库,数据市集,数据结构的有关问题
- ‘数据仓库’初学着请指点
- 写复杂SQL语句能力(电信行业表格SQL、数据仓库)
- 求书:《数据仓库》W.H.Inmon著,王志海 等译,该怎么解决
- 求书:《数据仓库》W.H.Inmon著,王志海 等译解决思路
- 数据仓库 etl怎么抽取不规则excel数据源? !
- 数据仓库课题(6)-数据仓库、主题域、主题概念与定义
- 数据仓库 1
- 数据仓库 2
- 数据仓库 3
- 数据仓库 4
- 某大型互联网公司 DW 数据仓库 试题解决方法
- 数据仓库 Analysis Services解决方法
- 某特大型互联网公司 DW 数据仓库 试题
- 商业智能的执行步骤 数据仓库
- [数据仓库]什么是主数据治理
- ‘数据仓库’初学着请指点
- 数据仓库、OLAP跟数据挖掘的比较分析
- 数据仓库-征集用户访问日志
- 数据仓库 与SIG系统的懂得
- 大牛们~新手求教~数据仓库,数据市集的有关问题
- 数据仓库 Analysis Services解决方案
- ‘数据仓库’初学着请指导!该怎么处理
- 数据仓库 元数据管理有关问题
- 数据仓库-BI商业智能
- 数据仓库,数据集市,数据孤岛,数据湖,数据中台
- AWS SAA-C02 数据库/数据仓库(RDS/Dynamodb/Redshift)相关考点整理
- 数据仓库、数据仓库和数据库的区别、数据仓库分层
- 数据仓库---拉链表详解
- 辨析BI、数据仓库、数据湖和数据中台内涵及差异点