Pio*_*zda 15 data-warehouse infobright
我正在构建一个数据仓库.每个事实都有它的时间戳.我需要按天,月,季度创建报告,但也要按小时创建.在示例中,我看到日期往往会保存在维度表格中.alt starexample http://etl-tools.info/images/dw_star_schema.jpg
但我认为,时间没有意义.维度表将增长和增长.另一方面,使用日期维度表的JOIN比在SQL中使用日期/时间函数更有效.
您有什么意见/解决方案?
(我正在使用Infobright)
dav*_*vek 33
Kimball建议使用单独的时间和日期维度:
在之前的Toolkit书籍中,我们建议使用时间的分钟或秒组成这样的维度作为每天午夜的偏移量,但我们已经意识到最终用户应用程序变得太难了,特别是在尝试计算时时间跨度.此外,与日历日维度不同,一天中特定分钟或秒的描述性属性非常少.如果企业有良好定义的属性在一天内的时间片,如移名称,或广告时隙,一个额外的时间 - 日期尺寸可以被添加到其中该尺寸被定义为分钟数的设计(或过了午夜.因此,如果谷物是分钟,则这个时间维度将具有1440个记录,或者如果谷物是秒,则具有86,400个记录.
我的猜测是,这取决于您的报告要求.如果您需要类似的东西
WHERE "Hour" = 10
Run Code Online (Sandbox Code Playgroud)
意思是每天在10:00:00到10:59:59之间,然后我会使用时间维度,因为它比...更快
WHERE date_part('hour', TimeStamp) = 10
Run Code Online (Sandbox Code Playgroud)
因为将为每一行评估date_part()函数.您仍应将TimeStamp保留在事实表中,以便聚合超过天数的边界,例如:
WHERE TimeStamp between '2010-03-22 23:30' and '2010-03-23 11:15'
Run Code Online (Sandbox Code Playgroud)
使用维度字段时会变得很尴尬.
通常,时间维度具有分钟分辨率,因此1440行.