(点击查看大图)图5-17 带有一个Derived Column转换的更新的数据流
(点击查看大图)图5-18 包含计算逻辑的Derived Column编辑器 正如所见,这些计算使用常见的算术公式,为目标度量生成所需的输出。ExtendedAmount涉及将OrderQuantity与UnitPrice相乘。UnitPriceDiscountPct涉及将UnitPriceDiscount除以UnitPrice。
Script Component。
5.4.3 管理事实表变化(1)
有时,源中匹配的事实表记录可能会变化,因此,需要传播至事实表。要处理变化,有一些常见的不同数据仓储方法: 对事实表作简单的UPDATE以用变化来修改已有记录
用新值在事实表中生成新记录,用标记表明记录的状态(当前的或过期的) 用一个偏移变化记录来计算事实记录和新值之前的差异 每种方法都有其优缺点,包括如下: 在较大的场景中,UPDATE变化会很昂贵 添加另一记录会增加事实尺寸 对于非累积度量来说,是不可能有变化记录的
正确的方法就是视情况而定。由于本书的目的是应用SSIS来ETL,正确的事实表设计选择将留给他人来讨论。不过,为了使您能进行设计,这里讨论的重点是有关标识变化的常见内容,以及如何最好地执行ETL中要求的事实表更新。
1. 标识变化的事实记录的方法
如果您够幸运的话,源种子将包括一种方法来标识记录是否需要变化或一个新的事实行。例如,源列可能提供数据操纵语言(Data Manipulation Language,DML)类型。DML使得行被发送到ETL,通常是I(insert,插入)、U(update,更新)或D(delete,删除)中 的一种。或者,源种子可能包括创建日期和修改日期。将这些日期与最后的增量变化标识符(如第3章所讨论的)相比较,可以使行的标识成为新行或修改的行。
说明:
如果创建日期大于最后的增量变化标识符,则成为新行。如果创建日期小于增量提取日期,而且修改日期大于最后的增量提取日期,则成为修改的行。
在这两种情况下,源记录不必将源行与事实表中的已有记录相匹配。遗憾的是,当事实源经历变化时,大部分情况下并不提供这一功能,源行需要与事实行相匹配来标识记录的DML类型。
与维度ETL和事实ETL的其他方面一样,在SSIS中有两种将源行与事实行相关的方式:
相关推荐: