我正在使用星型模式建模构建DW。我将它用于pentaho的BI项目。 我当然会有时间维度表。我将用不同的粒度(日,周,月,或许其他)分析我的事实表
我应该在维度表中为每个粒度添加一个属性(所以我有一天属性,一个月属性,一年属性......)或者我应该只写日期然后用这个日期计算所有内容(得到日期的月份,日期的年份......)?
为你提供了很多帮助
答案 0 :(得分:3)
除了日,周,月和年之外,您还应该考虑其他属性,例如"公司假期"或"财政季度"。这可以是从不同时间窗口驱动相同查询的巨大资源。
答案 1 :(得分:2)
我会将日期的属性添加为自己的列。这不会占用更多空间,并且通常可以使查询优化器更好地计算出有多少维度表记录与给定标准匹配(例如,day_of_month = 31)。
答案 2 :(得分:0)
通常,越多越好。
这是我正在使用的一个例子......
总账@ localhost-> select * from date_dimension where date ='2015-12-25';
- [记录1] ---- + --------------------
日期| 2015年12月25日
年| 2015
月| 12
monthname |腊
天| 25
dayofyear | 359
weekdayname |周五
calendarweek | 52
formatteddate | 25. 12. 2015
四分之一| Q4
yearquartal | 2015 / Q4
yearmonth |十二分之二千零十五
yearcalendarweek |五十二分之二千〇一十五
周末|平日
americanholiday |假日
austrianholiday |假日
canadianholiday |假日
期间|圣诞季节
cwstart | 2015年12月21日
cwend | 2015年12月27日
monthstart | 2015年12月1日
monthend | 2015-12-31 00:00:00
它基于PostgreSQL维基的查询... https://wiki.postgresql.org/wiki/Date_and_Time_dimensions
用更多的东西来增加它会很有趣:
宗教时代(复活节,众多圣徒日,斋月,犹太节日等)
相关司法管辖区的法定假日。我工作的公司最终宣传爱尔兰银行业假期,因为许多客户通过银行转账付款。
如果您在法国经营,您可能需要Lundi,Mardi,Mercredi,......而不是英文名称。
夏令时(如真/假)将是一个很好的补充。