2011-06-01 52 views
0

我在事實表中使用MM/DD/YY HH:MM:SS格式(例如2/24/2009 11:18:47 AM)和我有單獨的日期和時間維度 表。我想問的是,我如何使用日期時間字段在事實表中創建日期和時間鍵,以便我可以加入日期和時間維度。使用現有日期時間字段在事實表中計算日期和時間鍵

創建單獨的日期和時間維度及其好處有很多參考,但我無法找到如何使用現有日期時間字段在事實表中創建日期和時間鍵 。

我也聽說日期時間字段在事實表中有一定的好處。如果是這樣,你應該推薦什麼,如果我在事實表中有三個(日期鍵,時間鍵 和日期時間字段)。日期鍵和時間鍵是我必須具備的,如果在事實表中還有日期時間字段 ,我關心事實表大小。

謝謝大家給予的任何幫助。

回答

4

你需要做什麼(如果我理解正確的話)是在你的Fact表中創建兩個字段:kTime,kDate。

我們總是建議使用DimTime和DimDate的主鍵作爲含義(這是一個特殊情況,通常Dim表的主鍵沒有任何意義)。所以例如在DimDate中,我們將kDate作爲主鍵,其值格式爲YYYYMMDD,以便您可以通過kDate進行排序並按日期排序。然後讓DimTime表具有KH主鍵,形式爲HHMM或HHMMSS(取決於你需要的分辨率)。

最好還是在事實表上保留實際的日期時間字段,因爲它允許SQL使用它內置日期/時間函數來進行子集化,但是如果使用有用的額外列擴展Dim表:DimDate(添加DayOfWeek,IsHoliday,DayNumber,MonthNumber,YearNumber等)和DimTime(HourNumber,MinuteNumber,IsWorkingTime),則可以執行非常有趣的查詢很簡單

所以要回答你的問題,「如何使用現有的日期時間字段在事實表中創建日期和時間鍵?」 ...當您正在將數據加載到事實表,使用內置日期/時間函數來創建單獨的日期字段和時間字段。

它很大程度上取決於您在Fact表中預期的行數,這種方法會產生大量數據,但從數據倉庫的角度來看,它是最容易使用的。

祝你好運!

+0

嗨@馬庫斯D,感謝您的非常明確的答案。 – gtm 2011-06-01 12:29:47