【问题标题】:Dates as an attribute in Star schema日期作为星型模式中的属性
【发布时间】:2022-01-26 19:22:14
【问题描述】:

所有, 我建立了一个 DWH 星型模式已经有一段时间了,现在数据库太多了 :) 快速提问。我们可以使用日期作为某些维度的属性吗?比如Product维度中,如果我们有product effective_date和retired_date,这些都可以作为属性包含在product维度中对吧?

还有一个单独的日期维度。

谢谢。

【问题讨论】:

  • 当然……只要它们在慢慢变化

标签: database-design data-warehouse snowflake-schema


【解决方案1】:

也许正确的问题是维度表中的日期是否应该连接到 dimDate? 第一点: 这些属性可以被认为是事实,因为通常任何涉及日期的东西都是事实,因为它是时间敏感的。 因此,如果可能的话,我们可以将这些添加到事实表中。例如,这可能像 Fact.Product 或 Fact.ProductHistory 一样简单,但这实际上取决于您将如何分析数据。有时您甚至可能希望将它们直接添加到主事实表中,例如 Fact.Sales 或类似的东西。

第二点:

您必须意识到,添加关系需要时间来维护您的数据仓库。由于外键在 ETL 过程中可能会导致额外的开销,即使在加载数据时禁用它们,您也需要在再次启用它们后重新检查它们。

第三点: 您可以为每个日期属性创建一个专用的分隔日期维度

如果您确实希望将维度属性链接到日期维度,那么我发现为您的每个属性创建单独的日期维度表会更好。如果您的数据模型变得复杂,我会让您发现这样做的不便。

您可以将所有日期属性链接到同一个日期维度表,然后您会发现应用多个独立过滤器时会很困难。

如果您只想查看 X 个月添加的产品,但又想按购买月份汇总销售额,该怎么办?

使用单个日期维度意味着这个查询比它需要的要困难得多。如果您有单独的日期维度,这很容易做到。

你可以阅读更多关于role-playing dimensions的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多