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

有帮助吗?

解决方案

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

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

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

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

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

其他提示

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

这一个也会有所帮助。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top