【问题标题】:Fact/Dim Table Time Value事实/暗表时间值
【发布时间】:2009-01-06 21:51:24
【问题描述】:

我正在设置 Fact 和 Dim 表,并试图找出设置时间值的最佳方法。 AdventureworksDW 为 DimTime 表中的每个时间条目使用一个时间键 (UID)。我想知道有什么理由不应该只使用时间值,即 0106090800 (我的粒度是每小时)?

【问题讨论】:

    标签: sql data-warehouse multidimensional-array


    【解决方案1】:

    当您想要更改维度中的定义时,“智能键”(在本例中为编码日期和小时数)可能会导致问题。例如,您的用户可能坚持将本地时间更改为 UTC。现在您的键实际上不再是一个有用的数字,而是维度中的旧值。

    此外,由于存在午夜翻转问题,智能密钥的日期部分可能与 UTC 与本地时间更改的实际日期不匹配。

    为防止密钥成为问题,您不能将其用于任何类型的计算。在这种情况下,它比简单的 GUID 或自增数字好一点。

    自动增量键(或 GUIDS)既快速又简单。最重要的是,它们在所有维度上都非常一致。

    时间恰好有一个数字映射,但看看这是一个奇怪的巧合,而不是一个好的设计的基础。

    【讨论】:

      【解决方案2】:

      这是 Ralph Kimball 在时间维度上的 latest。它的日期是 2004 年,但它仍然很好。

      This one 也会有所帮助。

      【讨论】:

        【解决方案3】:

        主键应该是代理,没有意义——然而,使用 YYYYMMDD 作为日期维度键是难以抗拒的,并且还允许简单的表分区。诀窍是它仍然应该被视为毫无意义——它看起来像一个日期的事实应该被视为纯属巧合。永远不应将此密钥暴露给业务用户。

        【讨论】:

          猜你喜欢
          • 2021-12-14
          • 1970-01-01
          • 1970-01-01
          • 2021-09-30
          • 1970-01-01
          • 2019-10-19
          • 1970-01-01
          • 1970-01-01
          • 2019-11-06
          相关资源
          最近更新 更多