2011-12-13 101 views
0

我对自己的数据仓库使用自顶向下的方法,因此DW位于3NF中,数据集市是多维的。我读过,DW应该有一个时间戳(或类似的东西)来保存历史数据。
我的问题是:
我是否必须在DW中存储过去的数据,还是有足够的时间尺寸(技术上我使用2型SCD,在必要的地方)。数据仓库中的时间差异

如果DW必须是时间变量,那么:
什么时候我们在自顶向下的方法中使用SCD?
我应该使用时间戳作为表的PK部分吗?

谢谢!

+0

我真的不明白你的问题。它看起来像你有一个现有的数据仓库,但你问当前的设计是否正确,或如何实现新的东西或其他东西?无论问题是什么,如果你可以更具体,清楚地显示当前的结构,那么你会得到更好的答案。 – Pondlife

回答

1

如果可能,尽量避免在规范化模式中跟踪历史记录。 2型SCD要简单得多。但是,您确实需要使数据集市持久化 - 历史不能重建,因此数据集市是历史数据的标准来源。

一些提示:

  • 不要重复使用ODS/DW钥匙在你的尺寸。合并数据的自然键。这将您的ODS从您的星形模式中分离出来,并允许您在不影响星形模式的情况下重建ODS。

  • 追踪历史和从复杂的归一化数据重建历史位置非常烦琐。不要打扰;坚持'当前状态'在你的ODS中。

  • 制作一个通用的2型维度处理程序(可以使用系统数据字典中的数据)。这使您可以呈现预加载表并使用处理程序将数据合并到维度。

    这样做将ETL从历史记录中分离出来,并允许您单独测试它们。您可以通过验证预加载表是否正确来测试ETL - 您不必在测试前/测试之后进行测试。您可以使用维度处理程序的一组单元测试来测试历史记录跟踪。

    这种架构显着简化了测试。

  • 持久性数据集市而不是永久性ODS的一个优势是您可以轻松地对ODS进行重大手术。如果ODS不必跟踪历史记录,则可以根据需要删除和重新创建历史记录,并且可以轻松更改数据模型,而无需迁移历史数据。