oracle数据库渐变色,SSIS高级转换任务之渐变维度详解(2)

创建一个package,命名为SlowChangingDemension。创建一个Data Flow Task点击进入Data Flow界面。在Data Flow界面内下面的ConnectionManageers内新建一个Flat File Connection连接上面的文本文件,选择第一行作为列名如图4。在高级标签内设置EmployeePlanNbr和PayDeductType两个列的长度是10,设置EmployeeID的类型是32-bit Integer [DT_I4],设置DeductionAmount的数据类型是currency[DT_CY],如图5。

de321ab1334246586d24e5ddf517a0a8.png

图4

f3b65c7d743da265df64d5a1853b8c7c.png

图5

使用上述连接添加一个Flat File DataSource

添加一个渐变纬度任务,将Flat File DataSource和它连接起来

查看PayrollDeductItem表的内容如图6,你可能会奇怪为什么会有一些多余的字段例如HistTextStatus, HistBitStatus, HistStartDate, HistEndDate,在执行task的时候并不是所有的字段都用得上,我们会根据不同的设置来使用不同的列。注意这个截图是我执行这个SCD之后的表,数据已经被修改。

877f389a965637e2b46d4d1a1b1782df.png

图6

初次打开SCD的时候,设置向导会展开四个设置步骤,这些步骤如下:

维度表和维度选择步骤:这个步骤中设置维度表的位置,输入数据和维度表中对应字段,和使用那些字段作为主键以便一一对应。那些需要对应的字段将会被覆盖或者更新,还需要设置那些字段作为主键字段,以便对应。双击打开Slow Changing Demension进入向导设置界面,点击下一步进入Select a Dimension and Keys界面,首先选择数据库AdventureWorks和这个数据库下的表PayrollDeductItem作为Dimension Table,Imcoming columns这一列中的数据一部分被作为Business key来匹配Dimension Columns中的对应列,剩下的作为更新数据源,这里EmployeePlanIDNbr,EmployeeID两列作为Business key,剩下的两列默认Not a key column。这里注意到必须选择一列作为Business key才能进入下一步设置。设置好的界面如图7

572f642dae6e2a0a827e682b57a43d60.png

图7

渐变维度设置步骤:这个步骤只关心在第一个步骤中未被设置为主键字段的的那些字段。在这个步骤中将设置按照什么样的策略来更新这些字段。在运行的时候目标表中的数据将按照这些策略来更新。这些cerulean如下:

固定属性: 在维度表中的值是固定的,如果输入数据源中的数据有变动,将会报错。

更改属性:维度表中的数据总是被输入数据源中的数据覆盖掉。这是相面讨论的类型2。

历史属性:维度表中的数据和输入源中的数据会有不同,但是有重大意义,将会被保存起来。

如图8

67902060e9703ed80dbf30b258d3335e.png

图8

在这个例子中,点击下一步进入Slow Changing Dimension Clumns界面,上一个步骤中设置为默认Not a key column的两个列将会出现在这个步骤中,在这里他们作为更新Dimension Table的两个候选列。在Changing Type中选择修改属性为更新属性的或者历史属性,如果选择更新的,遇到匹配项的时候这一列的值将会被修改。如果选择为历史的将会评估变更,如果检测到更新,将会根据选择的历史变更添加一个新的行。这里我们做一个试验,将DeductionAmount和PayDeductType都选择为更新的。

固定和更新属性设置:点击下一步会看到如图9。在这里如果选择了固定属性,如果数据不同通过这个设置可以在运行时报错。前一个步骤我们没有选择更新属性,所以这里是灰色的不可用。另外一个选项设置是否覆盖当前活动数据,或者覆盖活动和实效的数据。

84d47e1663080894c88e3e14d81422f0.png

图9

历史属性设置步骤:只有在第2步骤选择历史属性会有这二个设置步骤。如果设置了历史的属性,那就是类型2。有两种方法来保存历史数据。每一种都会新插入一个行。我们来看这两个设置。

使用单独的行来显示当前的何过期的数据:这个选项允许在维度表中选择一个列,这个列用来标识这一行数据是老旧的,而另一行数据是更新的。在SCD中有两组值用来标识数据的时效性:True/False,Current/Expired。

使用开始时间和结束时间来标识更新的和老旧的数据:这个选项会使用维度表中的的两个列来标识这一行的有效期的开始时间和结束时间。要注意的一点是要使用一个时间变量来给这些列赋值。

这里既然DeductionAmount字段为历史的,PayrollDeductItem表中的一些看起来冗余的字段就有用了,这些字段可以标记这一行数据的不同的生效时间。选择变更类型为历史的时候字段HistStartDate和HistEndDate用来记录有效时间。当使用新加列的方法时这两个字段会变成false和Expired,新添加的一行将会是ture和Current。如图6-23示例说明如何使用HistStartDate和HisEndDate。设置时间值选项有一些系统变量,也可以使用自定义的变量,这里我们设置为System::StartTime然后点击下一步。

推断成员选项设置:当你从其他表中将数据导入到维度表中,但是维度表中的数据列不全或者你想过一段时间再执行它,可以在这个步骤中设置。这里我们不设置这个选项,如图10。

129b16a3e3900d6ca8c47e97ef1f9f4a.png

图10

完成向导步骤:使用这个步骤来完成整个SCD的设置,如图11。

1c7f7e8d7c64e1881137f92bf3b4379a.png

图11

在这个例子中,我们要判断维度表中那些字段作为主键,在PayrollDeductItem表中我们可以判断出[EmployeeIDNbr]字段是员工号,这个是不会改变的,另外[EmployeeID]也是不会改变的,这两个建组合成一个主键可以唯一标识一行数据。[PayrollDeductItemID]字段在这里不选择作为主键,因为在输入数据源中没有这样的一个字段。当运行的时候这个字段不能帮助我们判断这个行应该更新或插入到维度表中。

另外一个重要的设置是输入数据源中有匹配的数据的时候选择什么样的策略来更新维度表。举一个例子,在输入源数据中[EmployeePlanIDNbr] = "0000000001" [EmployeeID]= "1", [PayDeductType] ="401"这一行数据中对应的DeductionAmount是225.00,而在维度表中对应的值是200.00,我们应该怎么设置呢?下面的表格给出了选择项和对应的结果。

92c0382750f0a5d71405e6720089f516.png

图12

按照表中提示的信息,我们双击打开SCD,点击下一步转到选择主键选择设置。首选必须新建一个OLE DB数据源,并从数据源中选择维度表PayrollDeductItem。所有作为主键的字段和作为更新的字段都砸这里选择设置。默认的设置是“Not a key column”。在这里[EmployeePlanIDNbr]和[EmployeeID]选为business key。注意这里至少要选择一个列作为主键,否则不能点击下一步。最后的设置效果如图7。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值