如何使用不同谷物的事实表对日期维度进行建模

Posted

技术标签:

【中文标题】如何使用不同谷物的事实表对日期维度进行建模【英文标题】:How to Model Date Dimensions with Fact Tables of Different Grains 【发布时间】:2020-09-18 20:59:20 【问题描述】:

我们有一些 DW 用例,其中我们有不同粒度的事实表 - 例如,按天按商店销售(事实 1)和按月按月销售预算目标(事实 2)。它们都将日期作为谷物,但在一种情况下谷物是日,而另一种谷物是时期。

假设我们不能在短期内改变粒度,那么建模这个的正确方法是什么?

Date 和 Month 维度,它们将具有一致的属性? 1 日期维度,当它表示更高的值(例如,月份)时,带有空值或标志或其他内容 还有什么?

【问题讨论】:

【参考方案1】:

您只需要一个日期维度,每天一行。只需链接到您月经的最后一天。 例如。对于每月汇总的事实,只需在您的日期维度中链接到该月的最后一天。

【讨论】:

非常聪明的沃特?您将如何识别/管理带有这些颗粒的链接表。您想确保以某种方式自动(视图或存储过程或其他东西?)钻探知道这一点。也许是一面旗帜?【参考方案2】:

两种不同的维度,一种用于日期,一种用于月份

【讨论】:

谢谢尼克。在您的示例中,您如何使日期和月份链接的前端变得明显/容易?我不想让报告人需要记住他们需要在年/月(或我们决定的任何时间)加入这 2 个 嗨 - 我不确定你所说的“加入这两个”是什么意思?它们是维度,因此您只能将它们连接到事实表,并且任何一个事实表都只能连接到一个或另一个,而不是两者。您可能会通过您在事实表中用于 FK 的命名约定来明确要加入哪个,例如DATE_SK 和 MONTH_SK 您好 NickW。感谢您的回答!我的意思是 FactTable1 - FK - MonthDim FactTable2 - FK - DateDim 可以说 BI 开发人员(前端人员)需要将事实表 2 和 1 联系起来 - “钻探”。我知道你会通过 Year 和 Date 字段加入 MonthDim 和 DayDim,但我只是想知道是否有更聪明的方法来做到这一点,这样我们就不必依赖必须知道加入键的前端人员.当您有一致的维度(两个表都使用相同的维度)时,您无需担心这一点。 嗨 - 您只能在 2 个表中的相同(组)键之间进行钻取,例如您可以从 TableA 中的 customerID 钻取到 TableB 中的 customerID。在不同聚合级别的相同属性之间钻取,例如从一个月到一天,是向上(或向下)钻取,即它是一个层次结构。您的 BI 开发人员如何实现层次结构往往是特定于工具的

以上是关于如何使用不同谷物的事实表对日期维度进行建模的主要内容,如果未能解决你的问题,请参考以下文章

星型模式 - 贷款逾期日期建模

如何使日期维度与事实和另一个维度通用

两个层次相同但粒度不同的事实表

星型架构[事实 1:n 维度]...如何?

数据仓库之事实表设计

维度建模中事实表的两个或多个相似计数