SSIS在缺少新行的情况下解决数据负载维护历史的最佳实践是什么?

时间:2019-01-03 03:09:59

标签: ssis type-2-dimension

自Beta版以来我已经有20年的历史了。NET从DTS开始拥有SSIS,还有几年认真的Datawarehouse exp。,维度,事实表等。我完成了type2缓慢变化的维度,实现了合并和原始SQL任务完成对现有行,新行和更改行的检查。

但是我不是BI开发人员,这不是我的强项。

我需要考虑每天向不断增长的表中导入数据的情况。标记行(我想用日期时间戳记退休)以表明新的负载不包含匹配的行,也许该行已经退休了?当然,常规的数据加载也会发生变化,新的插入内容也会发生更新等。显然,这似乎是第二种缓慢变化的维度。

基于这个有限的描述,这是一个正确的假设吗?

我正在寻找经过时间考验的行业标准,以解决这种情况。

没有数据仓库,也没有用于分析参考的“仪表盘”,该数据实际上将用于支持认真的查找并作为实际计费的参考。

我知道这听起来如何,但是企业只是在尝试获取可能获取的数据的情况下,尽力建立最准确的数据参考。

类型2缓慢变化的尺寸。奇怪的是,实际上没有维表只是每天的数据负载,这里根本没有分析!

我什么都没有了,我正在寻找实现可接受模式的指导。

通用伪代码:

  • 行123 (我什至还没有PK)都出现在中,并且是唯一的,并且首先被加载到舞台表中,最后被加载到主表中< strong>正在加载“星期一”。

  • 加载“星期二”行123 更改了地址,并说是颜色列。...确认两个表中都存在该行更新更改的字段标志/更新的日期字段指示它已经改变了。

  • 加载“星期三”,并且源数据中没有第123行。退出第123行的退出日期(特殊DateTime列表示已退出,也许还有位标记表示已退出)< / p>

  • 仅实施基本类型2?

1 个答案:

答案 0 :(得分:0)

显然,分层的SQL MERGE结构提供了所需的条件:

匹配时 (SDC字段正在更改(不同))      然后更新.....

未按目标匹配时    然后插入()

当未按源和Target.IsRowCurrent匹配时= 1    然后更新

这基本上只是Alex Whittles在Purplefrogsystems.com上的博客的摘要 这似乎是事实上的标准,尽管检查当前日期而不是“行当前标记”也很突出。

可以添加额外的精力来将所有更改推送到登台表,并将这些更改批量加载到所需的目标表中,如果您有大量数据并发现需要额外的精力,则用登台表替换上面的目标表。

但是,这比SSIS SCD逐行向导更快。

我不愿再提及Todd McDermid关于Kimball方法SCD组件的视频。我不喜欢将别人的预制组件投入SSIS,即使是来自杰出的Kimball小组也是如此。

我希望了解发生了什么,但是如果您关心视频系列,那么在展示add in组件之前,它会以两种手动样式进行介绍:  https://www.youtube.com/channel/UCks8CDxSGRRh9IbtTc3ZRqw