数据仓库@缓慢变化维(拉链算法)

前言

维度表中的数据来源于操作型系统。在多维数据仓库或独立型数据集市中,数据直接来源于操作型系统。在企业信息化工厂中,来自于操作型系统的数据首先移到企业数据仓库中,然后进入多维数据集市。进入到维度表的信息,在操作型系统中仍然有可能发生改变。例如:客户的生日出现错误可能需要更新以纠正,客户的地址发生变化也需要更新等。

由于下游的星型模式使用代理键作为每个维度表的主键,因此不需要像原系统那样处理信息变化。操作型系统可以跟踪数据变化的历史情况,也可以简单的采用重写变化值的方式。无论如何,星型模式可以对不同方式的变化做出响应,这使得对整个业务过程的度量更有意义。

采用维度设计方案时,确定数据源的变化情况在维度表中如何表示非常重要。这一现象称为缓慢变化的维度,简称缓慢变化维(Slowly Changing Dimension)。该术语的名称反映了维度积累变化的实际情况,至少与积累数据行较为快速的事实表比较,维度变化相对缓慢。应对数据元素改变存在不同的响应方式。某些情况下,保留历史数据没有什么分析价值。某些情况下,保留历史数据将会起到至关重要的作用。——以上摘自数据仓库维度设计权威指南

 

说明

缓慢变化维其实在Kimball的维度数据仓库构建过程中是经常使用到的,所以掌握这样一个基本算法也是在做数据仓库开发工作中的必备技能,当然有时候我们也会听说拉链算法(俗称)其实都是指的是同一个东西

 

源业务系统中客户表

在源业务系统中的数据表是随时发生变化并且不会记录历史,只需要给客户呈现最新的数据即可

客户号 姓名 地址 电话
CIF10001 Jack China 17711111111
CIF10002 Rose China 17722222222

 

实现方式一:每日快照

可以看出客户Rose在20190103这天修改了手机号,那么我们只需要将源业务系统的数据表追加一个数据日期并进行每天全量快照就可以记录下数据每天的历史变化,一遍我们后续的维度分析。但是很明显这有一个缺点,就是数据重复非常严重,那么我们如果实现最少数据重复并记录数据的历史变化呢?继续看方式二

数据日期 客户号 姓名 地址 电话
20190101 CIF10001 Jack China 17711111111
20190101 CIF10002 Rose China

17722222222

20190102 CIF10001 Jack China 17711111111
20190102 CIF10002 Rose China

17722222222

20190103 CIF10001 Jack China 17711111111
20190103 CIF10002 Rose China 17733
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值