迟到的事实 - 处理它的最佳方式

时间:2016-02-12 16:30:12

标签: ssis etl data-warehouse star-schema

我有一个跟踪公司角色的星型模式,例如角色所属的部门,分配给角色的员工,当他们开始时,何时/如果他们完成并离开。

我有两个时间维度,StartedDate&结束日期。当角色处于活动状态时,源系统中的结束日期为空。在星型模式中,我将任何空结束日期设置为31/12/2099,这是我手动添加的维度成员。

我正在研究在角色完成或员工离职时更新Enddate的最佳方法。

现在我:

  1. 正常填充事实表,对所有维度进行查找。

  2. 然后我对事实表进行查找以查找重复项,但不包括此查找中的EndDate。不匹配的行是新的,因此插入到事实表中。

  3. 匹配行然后进入条件拆分以检查currentEndDate是否与newEnd Date不同。如果不同,则将它们插入到updateStaging表中并运行proc以更新事实表Fact table data flow

  4. 有更高效或更整洁的方法吗?

2 个答案:

答案 0 :(得分:0)

如何将所有内容放在foreach容器中,它会迭代并提高效率。

答案 1 :(得分:0)

我认为这是一个合理的解决方案。我个人会使用存储过程代替处理效率,但是由于DWH的维度性质和隐含的类型2性质,这是一种有效的方法。

另一种方式是,按原样执行SSIS的“不匹配”分支,但在“匹配”分支中,可以将行插入实际的事实表,然后进行后处理T-SQL步骤这将更新所需的两个记录。