当其中一个相关的Type 2 dims发生更改时,重新处理事实记录。如何处理Fact表上的键?

时间:2018-04-12 23:31:57

标签: data-warehouse business-intelligence dimensional-modeling fact-table natural-key

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

此外,其中一个相关维度是Type 2 dim,并且更改频繁发生。在我们最初提取事实数据和重新处理事件数据之间可能发生了对类型2维度记录的更改,从而导致该特定维度记录/自然键的新密钥,其中IsCurrent = 1。

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

我认为我们可以通过以下方式解决此问题:

  • 将维度记录的自然键添加到事实表中 更改MERGE以使用非类型2键和自然键 这张表是MERGE的独特之处。
  • 将事实MERGE上的Type 2键更改为Type 0 (基本上),如果将其作为新记录检测到,则将其插入,但该值永远不会更新。

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

0 个答案:

没有答案