更新和删除事实表中的记录

时间:2017-01-20 18:02:07

标签: sql sql-server ssis fact

我有一个事实表,其中有五个维度表与之关联。通常,事实表包含每个维度的代理键,并且没有业务/代理键。我正在尝试使用暂存事实表的数据加载事实表,即插入新记录。但是,我注意到事实表还可以处理其他操作,例如更新或删除数据。为此目的,在SSIS包中使用条件拆分来检查所有代理键是否为0然后进行新插入。我的问题是,我可以在更新或删除方面使用代理键吗?

我在事实表上做了一个插入,只是想知道数据的样子。

enter image description here

1 个答案:

答案 0 :(得分:1)

答案是肯定的,你可以。但是,是否会出现一个员工在同一天将同一产品从同一供应商销售给同一客户的情况?也许在同一天有不同的订单? (这是基于您在问题中提供的数据)

如果所有代理键一起可以唯一标识记录,请将事实记录更新到您的心中。但是,如果不是这种情况,当您不打算更新时,最终可能会更新记录。

我倾向于在我设计的事实表中包含一个订单号,以帮助避免这种情况,但您可能在实际的事实表中没有。包括订单号是在事实表中引用degenerate dimension的模式。我发现它非常方便。

无论如何,答案是一样的。您可以根据代理键更新事实记录,只要它们一起可以唯一地标识您要更新的行。

不要小心谨慎,请确保您的数据仓库设计为可以在需要时执行此操作。能够做到事实的更新可能是好的,而不是删除和替换,因为在ETL过程中可以有更少的步骤。