我正在设置 Fact 和 Dim 表,并试图找出设置时间值的最佳方法。AdventureworksDW 为 DimTime 表中的每个时间条目使用一个时间键 (UID)。我想知道有什么理由我不应该只使用时间值,即 0106090800 (我的粒度是每小时)?
madcolor
问问题
749 次
3 回答
3
当您想要更改维度中的定义时,“智能键”(在本例中为编码日期和小时数)可能会导致问题。例如,您的用户可能坚持将本地时间更改为 UTC。现在您的键实际上不再是一个有用的数字,而是维度中的旧值。
此外,对于午夜翻转问题,智能密钥的日期部分可能与 UTC 与本地时间更改的实际日期不匹配。
为防止密钥成为问题,您不能将其用于任何类型的任何计算。在这种情况下,它比简单的 GUID 或自动递增数字好一点。
自动增量键(或 GUIDS)既快速又简单。最重要的是,它们在所有维度上都非常一致。
时间恰好有一个数字映射,但它有助于了解这是一个奇怪的巧合,而不是一个好的设计的基础。
于 2009-01-06T22:28:25.460 回答
0
主键应该是代理,没有意义——但是,使用 YYYYMMDD 作为日期维度键是难以抗拒的,并且还允许简单的表分区。诀窍在于它仍然应该被视为毫无意义——它看起来像一个日期的事实应该被视为纯属巧合。永远不应将此密钥暴露给业务用户。
于 2009-11-29T05:13:52.097 回答