具有时间维度的数据建模

问题描述 投票:0回答:4

用 hh:mm:ss 一起创建时间维度会更好还是将它们分成 3 个维度会更好,因为单独它们会占用更少的空间?

您会推荐什么以及为什么?

data-modeling data-warehouse business-intelligence
4个回答
1
投票

为什么不是日期维度? 日期维度是数据仓库中的关键维度,因为它允许分析日期的不同方面的数据。除了年、季度、月、日、小时、分钟等标准日期属性外,日期维度还可以扩展为更丰富的分析

使用星型模式模型是最佳实践。日期维度称为 一致维度

在 3 维中分割 = 更多连接 = 复杂查询。


1
投票

为什么不在维度表上创建包含以下(也许更多)列的时间维度?

  • 呵呵
  • MM
  • SS
  • 上午下午指示器
  • 时:分:SS
  • 昵称(例如“中午”)
  • 时段(例如“早上”)
  • HH 军事(在这里您可以将 14 表示为下午 2 点)

这里的关键可能很有趣。也许它是一个序列,但您也可以使用 HHMMSS 作为键(带有前导零)。我认为性能不会有太大差异。


1
投票

我最终所做的只是创建一个单独的时间维度,其中为小时、分钟和秒的每种可能组合创建一行。

我这样做,而不是创建 3 个单独的表,每个表分别持续几小时、几分钟和几秒,以减少连接数量,并且不会使数据库中的表过于聚集。

我将其与日期表分开,以减少行数并降低性能。

看起来效果不错,谢谢大家的反馈。


0
投票

IMO,您希望保持日期维度的粒度,以便它可以连接到每个具有日期键的事实表。在大多数情况下,日级粒度可以满足这一目标。通过将粒度添加到一天中的时间(秒),您现在可以将此特定日期维度限制为仅按时间级别组织的事实表。此外,低至秒级别的日期维度将是日期级别维度的 86400 倍(分钟级别为 1440 倍)。在我看来,并且我相信最佳实践是实现两个维度表,一个用于日期级别粒度,第二个表用于一天中的时间粒度。

© www.soinside.com 2019 - 2024. All rights reserved.