| 在SQL Server 2005中,BI(Business Intelligence,商业智能)模块功能得以大大的增强。其中有一个重要的模块,被称为SQL Server Integrated Services(SSIS),即SQL Server数据库集成服务,其主要作用是对业务数据库或OLTP数据库中的数据进行抽取、转换和加载(Extract-Transform- Load,ETL)到数据仓库(Data Warehouse),以便针对需求对业务数据进行下一步的数据仓库建模和数据分析等工作。 渐变维度转换(Slowly Changing Dimension)是SSIS集成服务中的一个重要组件,本文主要探讨实际项目的实施过程中遇到的渐变维度转换组件效率低下的问题并提出一种解决方法。 渐变维度转换简介 首先介绍一下维度的概念。维度是一种层次关系,对应于客观世界,也就是人们观察事物的角度。在数据仓库中,一个实体的多个属性定义为该实体的维度,使得用户能对不同维度上的数据进行比较。 维度大致的分为三类:稳定维度、渐变维度、快变维度。在SQL Server 2005的SSIS中,提供了对渐变维度的转换处理。 从较长的一个时间段来看,在数据仓库中,维度表经常会随时间而发生一些改变,为了适应这种需求,也就必须为每个维度属性指定处理变化的策略。SSIS中的渐变维度转换组件的主要功能就是协调数据仓库中维度表中的记录更新和插入,如图1。  在SSIS中,渐变维度转换提供的主要功能有: 常见的使用情况有以下三类: 1) 改写维度记录的属性值:其特点是容易实现,比较方便,但不保存属性变化历史,故不能对旧属性的历史数据进行任何的维护。 2) 增量式添加维度记录行:其特点是容易区分事实表的历史,准确跟踪维度属性变化,但若针对的是海量数据,同时全部是变化的历史属性数据转换,将产生大量的历史数据,使得维度表数据量剧增。 3) 添加指定的维度列:可以方便地按需求建立新的属性关系,若中间关联的属性过多可能会急剧的影响性能。 在实际项目工作中,增量式添加维度记录行最为常用。 增量式添加维度记录行——维度渐变情况分析 假定从一张表(源表)向另一张表(目标表)转换数据,实现渐变维度转换常用的增量式添加维度记录功能。源表和目标表的初始情况如图2。 图2目标表列与源表列对应关系如表1: 目标表列 | aa1 | bb1 | cc1 | ee1 | 源表列 | aa | bb | cc | ee |
表 1:目标表列与源表列对应关系 主要考虑下面几种维度渐变情况: 1) 通过与目标表逐行对比,若源表中存在目标表中没有的记录,则该数据行应属于新增加的记录,此情况下将相应的新增记录插入到目标表 全文共3012字节 |