Postgresql
事實表中的時間維度或時間戳?
你會使用哪個,為什麼?單獨的時間維度或將時間戳放在事實表中?或者兩者兼而有之?
我正在建構一個數據倉庫,並且需要表示事件發生的時間,精確到一秒的粒度。我想匯總數據;例如,繪製一天中每小時事件數的圖表。
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])
或類似。