数据仓库中的时间维度
Posted
技术标签:
【中文标题】数据仓库中的时间维度【英文标题】:Time Dimension in Data Warehouse 【发布时间】:2014-10-19 09:51:42 【问题描述】:我有一个在其行中存储多个日期字段的事实表。我想保持设计的灵活性,并将所有这些字段与时间维度联系起来。然而,问题是我的报告最终在他们的查询中有太多的连接(每个日期字段一个)。我该如何缓解这个问题?
我有一个想法,即同时存储时间维度参考(快速搜索)和日期字段(高效检索)。这样做可能会出现什么问题?
概括这个想法,我们是否应该对事实表中的其他字段也这样做?
表结构
acc_num | acc_approved_date| acc_rejected_date| file_gen_date
链接到日期维度时的建议更改
acc_num | acc_approved_date_id| acc_rejected_date_id| file_gen_date_id
但是,在创建捕获所有这些日期的报告时,这会产生与日期维度表的连接过多的问题。我提出了两者的混合,我同时存储这些字段的日期和 ID。
【问题讨论】:
您能与我们分享一些事实表行吗?将问题可视化会很棒。因此,什么给你带来了问题?许多加入 - 性能或管理?你是在建议平板设计吗? @fenix 根据您的评论更新了问题。创建报告肯定很痛苦,因为我有大约 10 个这样的字段。我不清楚这是否会导致性能问题。谢谢。 我不知道你的数据量,我不知道想要的性能,所以,在我的脑海中,我将使用当前模型。您始终可以尝试制作垃圾维度(dim_id、dim_att1、dim_att2 ... dim_attN),然后使用直接查询事实表而不是使用连接来测试您的速度。但是,正如我所见,mysql 不是数据仓库的最佳选择,但我仍然不确定您的问题是什么?性能还是其他? 好的。我们现在没有大量的数据,但预计它会增长。我在这里主要担心的是,这将是“学术上”解决这个问题的最正确方法。我是数据仓库的新手,还不了解所有最佳实践。 理论上? :) 很少有解决方案,您可以从角色扮演维度开始。参见参考资料:kimballgroup.com/data-warehouse-business-intelligence-resources/…biwithjb.wordpress.com/2013/05/06/…kimballgroup.com/2004/10/design-tip-61-handling-all-the-dates 【参考方案1】:如果您想了解有关日期的信息(例如月份和年份的名称)或想要过滤日期,您只需加入日期维度表。 通过多个日期键执行此操作是正确的方法 - 对于您想要过滤或包含在查询结果中的所有维度,您需要一个联接。
【讨论】:
以上是关于数据仓库中的时间维度的主要内容,如果未能解决你的问题,请参考以下文章