【问题标题】:What is best practice for SSIS in addressing data load maintaining history with missing new rows?SSIS 在解决缺少新行的数据负载维护历史记录方面的最佳实践是什么?
【发布时间】:2019-01-03 03:09:59
【问题描述】:

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

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

我需要将每日数据导入到不断增长的表格中。标记行(我正在考虑使用日期时间戳退休)以指示新负载不包含匹配的行,也许该行已被淘汰?当然还有常规的数据加载变化、新的插入更新等。显然,这似乎是第二类缓慢变化的维度。

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

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

没有数据仓库,没有用于分析参考的“仪表板”,这些数据实际上将用于支持认真的查找和参考以进行实际计费。

我知道这听起来如何,但鉴于他们获得的数据,企业只是在尝试建立尽可能准确的数据参考。

类型 2 渐变维度。奇怪,因为真的没有维度表,只是每天加载的数据,根本没有分析!

我还没有任何东西,我正在寻找实现公认模式的方向。

通用伪代码:

  • 第 123 行(我什至还没有 PK)进入 并且是独一无二的,首先加载到舞台表,最后加载到主表 加载“星期一”。

  • 加载 "Tuesday" Row 123 有地址更改和更改,比如说它的颜色列....确认两个表中都存在行更新更改字段标志/更新日期字段指示它已经改变了。

  • 加载“星期三”到达,第 123 行不在源数据中。 用退休日期退休第 123 行(特殊的 DateTime 列表示退休,也可能是表示退休的位标志)

  • 只需实现基本类型 2?

【问题讨论】:

  • 是的,它听起来像一个 SCD 类型 2 没有一个代理键。这是许多应用程序(例如 SAP)中的一个很好的设计。每个“参考”行都有一个有效的起始日期和有效日期。

标签: ssis type-2-dimension


【解决方案1】:

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

当匹配并且 (SDC 字段正在改变(不同)) 然后更新.....

当目标不匹配时 然后插入 ()

当源和目标不匹配时。IsRowCurrent = 1 然后更新

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

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

但实际上,这比 SSIS SCD 逐行向导要快。

如果没有额外提及 Todd McDermid 的 Kimball Method SCD 组件视频,我会很失职。即使来自著名的 Kimball 小组,我也不喜欢将其他人的预构建组件折腾到 SSIS 中。

我宁愿了解发生了什么,但如果您关心视频系列,在展示添加组件之前,会以两种手动样式进行演示: https://www.youtube.com/channel/UCks8CDxSGRRh9IbtTc3ZRqw

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多