2013-03-04 33 views
3

我正在用星型模式建模構建DW。我將用它與pentaho進行BI項目。 我當然會有一個時間維度表。我將用不同的粒度(日,周,月,年或其他)來分析我的事實表在星型模式中我的時間維度表的屬性

我應該爲每個粒度在我的維度表中放置一個屬性(所以我有一天屬性,一個月屬性,一年的屬性...)或者我應該只寫日期,然後計算與此日期的所有內容(獲取日期的月份,日期的年份...)?

THKS很多關於你的幫助

回答

2

我想補充的日期的屬性作爲自己的列。這並不佔用更多的空間,並且通常會使查詢優化器在計算多少維度表記錄符合給定條件(例如,day_of_month = 31)時更好。

+0

很多這是我的想法。 也許是最後一個細節。我應該寫每一個屬性(日期,星期,月份,年份)還有日期屬性,還是這個屬性是無用的? – joris 2013-03-04 14:24:47

+3

地毯炸彈的維度表幾乎包含了你能想到的所有事物,包括日期。 – 2013-03-04 16:41:45

+0

英語不適合我的語言,「地毯炸彈」是正面還是負面? – joris 2013-03-04 17:00:50

3

除了日,周,月和年,您還應該考慮其他屬性,如「公司假期」或「財政季度」。這可以是用於驅動不同時間窗口的相同查詢的巨大資源。

0

通常,越多越好。

這裏是我使用的示例...

總帳@ localhost-> SELECT * FROM date_dimension其中date = '2015年12月25日';

- [RECORD 1] ---- + --------------------

date | 2015-12-25

年| 2015

month | 12

月份名稱| 12月

天| 25

dayofyear | 359

weekdayname |星期五

calendarweek | 52

formatteddate | 25. 12。2015

quartal | Q4

yearquartal | 2015/Q4

yearmonth | 2015/12

yearcalendarweek | 2015/52

週末|平日

americanholiday |假日

austrianholiday |假日

canadianholiday |假日

期間|聖誕節季節

cwstart | 2015-12-21

cwend | 2015-12-27

monthstart | 2015-12-01

monthend | 2015年12月31日00:00:00

它是基於來自PostgreSQL維基這裏查詢... https://wiki.postgresql.org/wiki/Date_and_Time_dimensions

這將是有趣的進一步東西以擴大此:

  • 宗教節日(復活節,無數聖徒日子,齋月節日,猶太節日等)

  • 法定節假日的相關司法轄區。我工作的公司最終宣佈愛爾蘭銀行假期,因爲一些客戶通過銀行轉賬支付。

  • 如果你在法國經營,你可能需要Lundi,Mardi,Mercredi ......而不是英文日的名字。

  • 夏令時(正確/錯誤)將是一個很好的補充。

相關問題