事实/昏暗表时间值

时间:2009-01-06 21:51:24

标签: sql data-warehouse multidimensional-array

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

3 个答案:

答案 0 :(得分:3)

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

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

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

自动增量键(或GUIDS)快速而简单。最重要的是,它们在所有方面都非常一致。

时间碰巧有一个数字映射,但它有助于看到这是一个奇怪的巧合,而不是良好设计的基础。

答案 1 :(得分:1)

这是Ralph Kimball关于时间维度的latest。这是2004年,但它仍然很好。

This one也会有所帮助。

答案 2 :(得分:0)

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