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

Update and delete records in the fact table

我有一个事实 table 有五个维度 table 关联到 it.Typically,事实 table 包含每个维度的代理键并且没有 business/surrogate 键。我正在尝试使用暂存事实 table i.e.Insert 新记录产生的数据加载事实 table。但是,我注意到 table 还可以处理其他操作,例如对数据的更新或删除。为此,在 SSIS 包中使用了条件拆分来检查所有代理键是否为 0,然后进行新插入。我的问题是,我可以在更新或删除方面使用代理键吗?

我插入了一个事实 table 只是为了让您了解数据的外观。

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

如果所有的代理键一起可以唯一标识一条记录,更新事实记录到你满意的程度。但是,如果不是这种情况,您可能会在不打算更新时更新记录。

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

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

不要把谨慎抛诸脑后,请确保您的数据仓库设计得可以在需要时执行此操作。与删除和替换相比,能够就地更新事实可能很好,因为 ETL 过程中的步骤可能更少。