缓慢变化维 Slowly Changing Dimensions( A typical slowly changing dimension is a product dimension in which the detailed description of a given product is casionally adjusted. ): 数据仓库数据加载规则,数据仓库中用于实现历史数据与当前数据的同时记录。
3.1 概述
缓慢变化维Slowly Changing Dimensions(A typical slowly changing dimension is a product dimension in which the detailed description of a given product is casionally adjusted.):数据仓库数据加载规则,数据仓库中用于实现历史数据与当前数据的同时记录。与OLTP系统不同的是,数据仓库中可以保留下数据的变化信息,及历史数据的记录。
缓慢变化维Slowly Changing Dimensions(A typical slowly changing dimension is a product dimension in which the detailed description of a given product is casionally adjusted.):数据仓库数据加载规则,数据仓库中用于实现历史数据与当前数据的同时记录。与OLTP系统不同的是,数据仓库中可以保留下数据的变化信息,及历史数据的记录。
由于系统的设计不同, OLTP系统可以方便的得到实时的报表,却难于得到混合的、复杂的、包含历史的统计信息。数据仓库系统却由于有其专有的建模方式,可以方便的做到这些。在数据仓库中,一个典型的事实表设计,其包含多个代理主键,周围由多个星形围绕着它的维表构成,这些维表则是一些具有简单主键的表。对于维表数据的历史存储的需要,一种典型的数据加载规则即是 Slowly Changing Dimensions方式。即当维表数据发生改变,数据仓库需要感知,并真实的记录下数据的每一步细微变化。
但是通过代理键的方式进行维度的加载,一方面导致维度表设计过于复杂,另一方面事实表数据中的相应的键值也需要进行相应的代理键替换,从而导致了设计的复杂性、数据库性能的下降和维护的成本的提高,因此这些维度通常是根据用户需求和业务敏感度极高的基础表信息,例如某些企业内的工号,因为工号分配的限制,员工流失后,新进入的员工仍使用原来的员工号,对于 OLTP系统只需要一个简单的 UPDATE即可;而对于数据仓库系统则要区分同一个工号前后不同的人员信息,以避免查询时对同一个工号发生的歧义。
对于一般性的维度,仍建议使用最简单的方式进行维度处理,即覆盖法,对于维度只做更新和插入处理,不做删除,即只保留最后一次更新的状态,不保留历史状态,对于大多数维度信息已经足够。
3.2 原理
缓慢变化维的实现原理,采用的是数据仓库的 3种常用数据加载规则中的全表比对方式。在 ETL过程中,抽取所有源数据,并进行相应规则转换,完成后先不插入目标,而对每条数据进行目标表比对。根据主键值进行插入与更新的判定,目标表已存在该主键值的,表示该记录已有,并进行其余字段比对,如有不同,则进行 Update操作,如目标表没有存在该主键值,表示该记录还没有,即进行 Insert操作。通过全表比对,感知数据的变化,并进行相应的处理。
缓慢变化维的实现原理,采用的是数据仓库的 3种常用数据加载规则中的全表比对方式。在 ETL过程中,抽取所有源数据,并进行相应规则转换,完成后先不插入目标,而对每条数据进行目标表比对。根据主键值进行插入与更新的判定,目标表已存在该主键值的,表示该记录已有,并进行其余字段比对,如有不同,则进行 Update操作,如目标表没有存在该主键值,表示该记录还没有,即进行 Insert操作。通过全表比对,感知数据的变化,并进行相应的处理。
数据仓库的数据加载规则可以有多种方式实现,缓慢变化维是其中一种非常强大的方式。而根据它的具体设计不同又可分为 3种:覆盖、全历史记录、记录最新纪录及上一次历史。在以下的介绍中将把数据仓库的数据加载规则融入进去,并结合 SQLServer脚本的缓慢变化维的实现详细说明。
本文转自baoqiangwang51CTO博客,原文链接:
http://blog.51cto.com/baoqiangwang/310380
,如需转载请自行联系原作者