3 关于数据仓库维度数据处理的方法探究系列——缓慢变化维概述和原理

来源:互联网 发布:淘宝网禁止出售兴奋剂 编辑:程序博客网 时间:2024/04/29 12:22

原创于2006年12月07日,2009年10月15日迁移至此。


缓慢变化维Slowly Changing DimensionsA typical slowly changing dimension is a product dimension in which the detailed description of agiven product is casionally adjusted.): 数据仓库数据加载规则,数据仓库中用于实现历史数据与当前数据的同时记录。

 

3.1概述

缓慢变化维Slowly Changing Dimensions(A typical slowly changing dimension isa product dimension in which the detailed description of agiven product is casionallyadjusted.):数据仓库数据加载规则,数据仓库中用于实现历史数据与当前数据的同时记录。与OLTP系统不同的是,数据仓库中可以保留下数据的变化信息,及历史数据的记录。

由于系统的设计不同,OLTP系统可以方便的得到实时的报表,却难于得到混合的、复杂的、包含历史的统计信息。数据仓库系统却由于有其专有的建模方式,可以方便的做到这些。在数据仓库中,一个典型的事实表设计,其包含多个代理主键,周围由多个星形围绕着它的维表构成,这些维表则是一些具有简单主键的表。对于维表数据的历史存储的需要,一种典型的数据加载规则即是SlowlyChanging Dimensions方式。即当维表数据发生改变,数据仓库需要感知,并真实的记录下数据的每一步细微变化。

但是通过代理键的方式进行维度的加载,一方面导致维度表设计过于复杂,另一方面事实表数据中的相应的键值也需要进行相应的代理键替换,从而导致了设计的复杂性、数据库性能的下降和维护的成本的提高,因此这些维度通常是根据用户需求和业务敏感度极高的基础表信息,例如某些企业内的工号,因为工号分配的限制,员工流失后,新进入的员工仍使用原来的员工号,对于OLTP系统只需要一个简单的UPDATE即可;而对于数据仓库系统则要区分同一个工号前后不同的人员信息,以避免查询时对同一个工号发生的歧义。

替代键方式 概图

对于一般性的维度,仍建议使用最简单的方式进行维度处理,即覆盖法,对于维度只做更新和插入处理,不做删除,即只保留最后一次更新的状态,不保留历史状态,对于大多数维度信息已经足够。

简单维度更新 概图

3.2原理

缓慢变化维的实现原理,采用的是数据仓库的3种常用数据加载规则中的全表比对方式。在ETL过程中,抽取所有源数据,并进行相应规则转换,完成后先不插入目标,而对每条数据进行目标表比对。根据主键值进行插入与更新的判定,目标表已存在该主键值的,表示该记录已有,并进行其余字段比对,如有不同,则进行Update操作,如目标表没有存在该主键值,表示该记录还没有,即进行Insert操作。通过全表比对,感知数据的变化,并进行相应的处理。

数据仓库的数据加载规则可以有多种方式实现,缓慢变化维是其中一种非常强大的方式。而根据它的具体设计不同又可分为3种:覆盖、全历史记录、记录最新纪录及上一次历史。在以下的介绍中将把数据仓库的数据加载规则融入进去,并结合SQLServer脚本的缓慢变化维的实现详细说明。

原创粉丝点击