什么是渐变维?
维度可以根据变化剧烈程度主要分为
无变化维度
和
变化维度
。例如一个人的相关信息,身份证
号、姓名和性别等信息数据属于不变的部分;而婚姻状态、工作经历、工作单位和培训经历等属于
可能会变化的字段。
大多数维度数据随时间的迁移是缓慢变化的。比如增加了新的产品,或者产品的ID号码修改了,或者产品增加了一个新的属性,此时,维度表就会被修改或者增加新的记录行。这样,在设计维度和使用维度的过程中,就
要考虑到缓慢变化维度数据的处理。
缓慢渐变维
,即维度中的
属性可能会随着时间发生改变
,比如包含用户住址Address的
DimCustomer维度,用户的住址可能会发生改变,
进而影响业务统计精度
,DimCustomer维度就
是缓慢渐变维(SCD)。
SCD有三种分类,我们这里以顾客表为例来进行说明:
假设在第一次从业务数据库中加载了一批数据到数据仓库中,当时业务数据库有这样的一条顾
客的信息。
顾客 BIWORK ,居住在北京,目前是一名 BI 的开发工程师。假设 BIWORK 因为北京空气
质量 PM2.5 等原因从北京搬到了三亚。那么这条信息在业务数据库中应该被更新了。
那么当下次从业务数据库中抽取这类信息的时候,数据仓库又应该如何处理呢?
我们假设在数据仓库中实现了与业务数据库之间的同步,数据仓库中也直接将词条数据修改更
新。后来我们创建报表做一些简单的数据统计分析,这时在数据仓库中所有对顾客 BIWORK 的销
售都指向了 BIWORK 新的所在地 - 城市三亚,但是实际上 BIWORK 在之前所有的购买都发生在
BIWORK 居住在北京的时候。
通过这个简单的例子,描述了因一些基本信息的更改可能会引起数据归纳和分析出现的问题。
SCD1(缓慢渐变类型1)
通过更新维度记录
直接覆盖
已存在的值。
不维护记录的历史
。一般用于修改错误的数据,
即历
史数据就是错误数据,除此没有他用
。
在数据仓库中,我们可以保持业务数据和数据仓库中的数据始终处于一致。可以在 Customer
维度中使用来自业务数据库中的 Business Key - CustomerID 来追踪业务数据的变化,一旦发生变化那么就将旧的业务数据覆盖重写。
DW 中的记录根据业务数据库中的 CustomerID 获取了最新的 City 信息,直接更新到 DW
中。
目前
创新互联公司已为上千家的企业提供了网站建设、域名、
雅安服务器托管、网站托管维护、企业网站设计、
花垣网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。 SCD2(缓慢渐变类型2)
在源数据发生变化时,给维度记录建立一个新的
“版本”记录
,从而维护维度历史。SCD2
不删除、 不修改已存在的数据
。SCD2也叫
拉链表
。
在数据仓库中有很多需求场景会对历史数据进行汇总和分析,因此会尽可能的维护来自业务系 统中的历史数据,使系统能够真正捕获到这种历史数据的变化。
以上面的例子来说,可能需要分析的结果是 BIWORK 在 2012年的时候购买额度整体平稳, 但是从2013年开始购买额度减少了。出现的原因可能与所在的城市有关系,在北京的门店可能比在三亚的门店相对要多一些。
像这种情况,就不能很简单在数据仓库中将 BIWORK 当前所在城市直接更新,否则此用户所有的购买额度都会归于三亚。
通过起始时间来标识,Valid To(封链时间)为 NULL 的标识当前数据,也可以用2999,3000, 9999等等比较大的年份。数仓内部需要保持统一。每个版本都会产生一行新的数据。
SCD3(缓慢渐变类型3)
实际上SCD1 and 2 可以满足大多数需求了,但是仍然有其它的解决方案,比如说 SCD3。
SCD3希望只
维护更少的历史记录
。
比如说把要维护的历史字段
新增一列
,然后每次只更新 Current Column 和 Previous Column。这样,只保存了最近两次的历史记录,
历史数据都在同一行数据中
。但是如果要维护的
字段比较多,就比较麻烦,因为要更多的 Current 和 Previous 字段。所以 SCD3 用的还是没有
SCD1 和 SCD2 那么普遍。它只
适用于数据的存储空间不足
并且
用户接受有限历史数据
的情况。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:关于解决缓慢渐变维的3种方式-创新互联
分享路径:
http://cdkjz.cn/article/csdejh.html