Postgresql

事實表中的時間維度或時間戳?

  • September 4, 2015

你會使用哪個,為什麼?單獨的時間維度或將時間戳放在事實表中?或者兩者兼而有之?

我正在建構一個數據倉庫,並且需要表示事件發生的時間,精確到一秒的粒度。我想匯總數據;例如,繪製一天中每小時事件數的圖表。

Kimball 的“數據倉庫工具包”設計了一天中的時間維度。最近的一篇部落格文章建議不要這樣做,而是在事實表中使用時間戳:

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

如果我在事實表中使用時間戳,按小時匯總是否仍然容易/快速?

在做出此選擇時需要考慮其他權衡嗎?

我建議將兩者都包括在事實表中。維度應該用於過濾和分組,而時間戳值可以用於詳細的報告/查詢。

除非您關心事件發生在每分鐘 8 秒還是 42 秒,否則請以 1 分鐘為單位創建時間維度。

由於您沒有標記您的 RDBMS,我認為謹慎地提及更高版本的 SQL Server 不允許date + time數據類型操作;即從日期和時間維度業務鍵重新創建時間戳。解決方法 isconvert(datetime, [date column]) + convert(datetime, [time column])或類似。

引用自:https://dba.stackexchange.com/questions/114183