我正在使用星型模式建模构建 DW。我会将它用于 pentaho 的 BI 项目。我当然会有一个时间维度表。我将以不同的粒度(日、周、月、年,也许其他)分析我的事实表
我应该在我的维度表中为每个粒度放置一个属性(所以我有一天属性、一个月属性、一年属性......)还是应该只写日期然后用这个日期计算所有内容(获取日期的月份,日期的年份...)?
非常感谢您的帮助
我正在使用星型模式建模构建 DW。我会将它用于 pentaho 的 BI 项目。我当然会有一个时间维度表。我将以不同的粒度(日、周、月、年,也许其他)分析我的事实表
我应该在我的维度表中为每个粒度放置一个属性(所以我有一天属性、一个月属性、一年属性......)还是应该只写日期然后用这个日期计算所有内容(获取日期的月份,日期的年份...)?
非常感谢您的帮助
除了日、周、月和年,您还应该考虑其他属性,例如“公司假期”或“财政季度”。这可能是一个巨大的资源,用于驱动不同时间窗口的相同查询。
我会将日期的属性添加为它们自己的列。这不会占用更多空间,并且通常可以让查询优化器更好地计算出有多少维度表记录与给定标准匹配(例如,day_of_month = 31)。
通常,越多越好。
这是我正在使用的示例...
ledger@localhost-> select * from date_dimension where date = '2015-12-25';
-[ 记录 1 ]----+--------
日期 | 2015-12-25
年份 | 2015
月 | 12
月名 | 十二月
天 | 25
一年中的一天 | 359
工作日名称 | 星期五
日历周| 52
格式化日期 | 25. 12. 2015
夸脱| 第四季度
年季| 2015/Q4
年月 | 2015/12
年历周| 2015/52
周末 | 平日
美国假日 | 假期
奥地利假日| 假期
加拿大假日| 假期
期间 | 圣诞季节
启动 | 2015-12-21
温德 | 2015-12-27
月开始 | 2015-12-01
月末 | 2015-12-31 00:00:00
它基于来自 PostgreSQL wiki 的查询... https://wiki.postgresql.org/wiki/Date_and_Time_dimensions
用更多的东西来增加它会很有趣:
宗教日(复活节、许多圣徒日、斋月、犹太节日等)
相关司法管辖区的法定假日。我工作的公司最终公布了爱尔兰银行假期,因为许多客户通过银行转账付款。
如果您在法国经营,您可能需要 Lundi、Mardi、Mercredi ……而不是英文日期名称。
夏令时(真/假)将是一个很好的补充。