0

在我工作的地方,我们会在需要的极少数情况下初始化(“INIT”=> 截断和加载)一个 Fact\ Dimension 表。

这样的“INIT”要求所有引用已初始化对象的对象随后都被初始化,以保持 RI(参照完整性)。

示例 – 我们在属性丰富的 (~25) SCD Dim_Employees 中发现了一个错误,该错误将更改每条记录的生效日期。这需要所有引用对象重新计算它们的外键。

你有同样的情况吗?如果有,你是如何处理的?

4

1 回答 1

0

当我们从 SCD2/SCD1 更改为 SCD6 或发现其中一个数据流有问题时,我们已经多次重新调整数据尺寸,就像您提到的那样。

重新映射数据并不难,您只需要在 INIT 步骤中截断数据以克隆它(或在时间旅行窗口内克隆)之前进行,然后将事实表加入旧维度上的旧维度键,然后通过旧维度外键和时间加入新维度,现在您知道新键映射的旧键。现在它成为您更新的来源,如果您在所有其他 ETL 操作暂停的情况下执行此操作,您就可以保持数据完整性。

如果您无法暂停实时 ETL 流程,您将进行多步骤更新,您将在其中拥有新的分区表和旧的分区表,并对两者进行正常映射,并修复您的读取以合并结果,然后一旦您的新事实正确映射到新维度,转身并用 ND 键回填所有旧事实,然后您没有 ND 间隙,然后您可以停止 OD/ND 合并,然后停止 OD 映射并删除 OD 列...

于 2019-03-19T20:16:07.920 回答