0

在我们的每日 ETL 负载中,我们正在加载一年前的历史记录,并且该窗口每天都会更改为从 MAX(增量日期时间)值回溯一年。有时,事实数据中的记录是历史更新的,我们将获取该更改并重新处理。

此外,相关维度之一是类型 2 暗淡,并且经常发生变化。类型 2 维度记录的更改可能发生在我们最初提取事实数据和重新处理之间,从而导致该特定维度记录/自然键的新键,其中 IsCurrent = 1。

我们将来自集成层的事实数据合并到来自相关维度的代理键上的表示层。但是,由于发生了类型 2 更改,我们现在有一个用于相关暗淡的新键,我们的 MERGE 将其检测为新记录,而不是看到它已经存在。现在我们在事实表中有重复的记录。

我认为我们可以通过执行以下操作来解决此问题:

  • 将维度记录的自然键添加到事实表并更改 MERGE 以使用非类型 2 键和该表的自然键作为使其对 MERGE 唯一的原因。
  • 将事实 MERGE 上的 Type 2 键更改为 Type 0(本质上),如果它被检测为新记录但值永远不会更新,则将其插入其中。

这里可能还有其他选择,但这是我首先想到的处理这个问题的方法。我认为这是一个非常常见的用例,我只是想知道最佳实践方法是什么。理想情况下,我们不会重新处理一年前的事实数据,但这就是它的方式。

4

0 回答 0