代码之家  ›  专栏  ›  技术社区  ›  Josh Alvo

使用代理密钥(和SCD)导入DWH

  •  0
  • Josh Alvo  · 技术社区  · 11 年前

    我有一个数据仓库,它使用内部代理键和类型2缓慢变化的维度。 在清算中,我们只有erp系统的业务密钥,如下所示:

    Image of Clearing, sorry don't have enough reputation to post it directly or more than two links

    在数据仓库中,我们希望使用替代密钥(注意:物品价格从500美元变为1000美元,物品在可能的情况下使用替代密钥,此处仅适用于制造商)。

    Image of Data Warehouse

    如果我们只是使用业务密钥,那没问题,只需比较、更新旧条目、插入新条目即可。 但是,使用代理密钥的最佳方法是什么?

    从清除中的数据仓库获取现有ID(0或-1表示尚未存在),然后比较条目?

    enter image description here

    将业务密钥也保存在数据仓库中,比较它们并更新ID,然后在数据仓库?

    i.pictr.com/3kqn6wb9ou.png

    1 回复  |  直到 11 年前
        1
  •  0
  •   michalko    10 年前

    为了能够在加载表时进行查找,就像在加载文章时引用制造商一样,您必须在DWH中存储自然/业务键。根据我的经验,这是经常做的。

    但是您应该只在目标实体中存储源实体的业务密钥。让我澄清一下,制造商的业务密钥只应出现在DWH中的制造商表中,而不应出现在其他地方。当您需要引用不同表中的制造商时,例如Article,您可以使用制造商的代理密钥。

    所以,你在第二张截图中得到了正确的答案。

    然后,当您加载Article表时,您需要知道制造商是否为特定的产品更改了,您首先根据其业务密钥查找制造商的代理密钥,并将代理密钥与Article表中的密钥进行比较。通常是这样做的。

    推荐文章