事实表中的时间维度或时间戳?

use*_*708 8 postgresql data-warehouse dimension time

你会使用哪个,为什么?单独的时间维度还是在事实表中放置时间戳?或者两者兼而有之?

我正在构建一个数据仓库,需要表示事件发生的时间,精确到一秒。我想汇总数据;例如,绘制一天中每小时的事件数量图。

Kimball 的“The Data Warehouse Toolkit”,有一个时间维度的设计。最近的一篇博文建议不要这样做,而是在事实表中使用时间戳:

http://www.kimballgroup.com/2004/02/design-tip-51-latest-thinking-on-time-dimension-tables/

如果我在事实表中使用时间戳,按小时汇总是否仍然容易/快速?

做出此选择时还需要考虑其他任何权衡吗?

小智 5

我建议将两者都包括在事实表中。维度应该用于过滤和分组,而时间戳值可以用于详细报告/查询。

除非您关心事件是在 8 秒还是 42 秒后发生,否则请以 1 分钟为单位创建时间维度。

由于您没有标记您的 RDBMS,我认为谨慎地提及 SQL Server 的更高版本不允许date + time数据类型操作;即从日期和时间维度业务键重新创建时间戳。解决方法是convert(datetime, [date column]) + convert(datetime, [time column]),或类似的。