用SSIS 2005向导处理渐变维度(上)

日期: 2009-07-06 作者:Baya Pavliashvili翻译:冯昀晖 来源:TechTarget中国 英文

在SQL Server之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS)包里。在DTS包中,你需要人工在维度表和相关数据源之间比较每一个相关列的值。如果发现了任何差异,你就不得不决定你应该创建新的一行,还是覆盖存在的那一行,进而实现对渐变维的管理。SQL Server 2005集成服务(SSIS 2005)有一个转换功能,可以通过运行一个配置向导基本实现SCD。

  几乎对于每一个数据仓库来说,渐变维度都是它们的一部分。很少有人能见到成员值保持恒定的维度。例如:顾客维的属性如姓氏……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在SQL Server之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS)包里。在DTS包中,你需要人工在维度表和相关数据源之间比较每一个相关列的值。如果发现了任何差异,你就不得不决定你应该创建新的一行,还是覆盖存在的那一行,进而实现对渐变维的管理。SQL Server 2005集成服务(SSIS 2005)有一个转换功能,可以通过运行一个配置向导基本实现SCD。

  几乎对于每一个数据仓库来说,渐变维度都是它们的一部分。很少有人能见到成员值保持恒定的维度。例如:顾客维的属性如姓氏,职业,家庭地址以及其他属性很可能随时变化。一些变化相对较小。例如:如果一个部门的名称从“市场部”变为“市场销售部”,你可能不需要跟踪该变化的历史数据。然而,客户收入水平或者收入负债比的调整历史对于那些销售消费贷款的财务组织来说可能非常重要。在这种情况下,数据仓库架构师必须想办法跟踪记录这些变化。

  有很多种方法可以维护维成员值的变化,但这里列出最常用的方法:

  覆盖原来存在的维成员值。它不提供保存变更历史的机制。这种方法通常称为“Type 1 SCD”。

  用当前维成员创建新的一行记录。把原来存在的行标记为过期。这种方法一般称为“Type 2 SCD”。

  这里列出了SSIS中渐变维度向导的工作方法以及它能给数据仓库架构师带来的价值:

  在运行SCD转换向导之前,你应该配置好你的数据源组件和目标组件。在本例中:我使用SQL Server关系数据库作为数据源,使用一个数据仓库(可能正好也是一个SQL Server数据库)作为目标组件。你也可以把SCD转换组件作为数据源组件和目标组件,而不是只能用SQL Server。

  SSIS项目一般是通过商业智能集成开发环境(Business Intelligence Development Studio,简称BIDS)开发的。首先,创建一个SSIS项目(文件→新建→项目,选择集成服务项目模板),然后给控制流中添加一个数据流任务。激活数据流标签页,然后在BIDS中指定你的数据源组件和目标组件。接下来把SCD转换组件拖拽到数据流设计器中,拖拽绿色箭头线,使之从数据源发起连接指向SCD转换组件。然后双击SCD转换组件,激活SCD向导。

  初始屏幕只有简单的欢迎提示,告诉你SQL Server集成服务2005中渐变维度向导的功能。你可以设置以后不显示该欢迎界面。下一个界面会让你选择一个或多个业务键。业务键用来唯一识别填入维度表的每一条表记录。每一个维度表可以有一个或多个业务键。

  一般来说,你的维度表还会有一个代理键——该列不是在数据源里找的,而是在ETL(extraction,transformation,loading:抽取,转换,加载)过程中添加到维度表里的。通常代理键作为唯一标识列使用——这些列没有业务含义,但它们可以唯一标识每一个维度记录。

  确定了业务键后,现在就该选择你希望在SCD里维护的列(也称为属性)了,本向导给出了三个选项:

  固定属性——这种列的数据不应该改变。如果SSIS检测到标识为固定属性的列值发生了变化,它就会抛出一个异常,然后使包执行失败终止。在下一个界面,有一个跟这个选项类似的选项需要给你的包配置。检测固定属性列值的变化其实并不是渐变维度实现的一部分,但是如果你想在SSIS包执行时,搞清楚源数据中出现的问题,这个功能会非常有用。

  变化型属性——Type 1 SCD;变化属性的值被简单地覆盖。变化历史不记录。

  历史型属性——这是Type 2 SCD。这一类修改值被保存在新记录中,原来的值被标识为过期。

相关推荐