【问题标题】:Understanding the fact tables in data warehousing了解数据仓库中的事实表
【发布时间】:2013-06-07 06:28:23
【问题描述】:

使用基本星型模式,有人告诉我事实表的行数至少等于每个维度中行数的乘积。

例如,3 个产品、5 个促销和 10 个商店意味着事实表应该至少有 150 条记录,而不管产品实际上在哪里进行了每个促销或存在于每个商店。具体来说,空值将存在于例如产品没有特定促销等的情况下。

有人可以提供支持的学术来源吗,或者至少请确认一下这个想法。

我问这个的原因是我的理解告诉我这会在事实表中创建大量无用的数据。

谢谢!

【问题讨论】:

  • 废话,读Kimball的书——它们写得很好,很简单。
  • 您好,感谢您的回复。请看下面的帖子。

标签: relational-database data-warehouse fact-table


【解决方案1】:

这可能与特定类型的事实表有关:Ralph Kimball 将这种模式称为定期快照事实表。这就是事实表在每个时间点重复整个行群的地方。 IMO 这种方法的用处非常有限。

快照事实表并不隐含地要求事实表是其维度的乘积,但它确实提出了每个快照的正确人口应该是多少的潜在问题。我想维度的叉积是一种方法。

【讨论】:

    【解决方案2】:

    您好,感谢您的回复。我咨询了我的讲师,他实际上为我找到了一个页面参考:“......举一个非常简单的例子,在维度表中以行表示 3 个产品、5 个客户、30 天和 10 个销售代表。即使在这个例子中,事实表行数将为 4500,与维度表行相比非常大......”(Ponniah, P.,2009 年。数据仓库:IT 专业人员基础,第 2 版。John Wiley & Sons, Inc.,新泽西州。第 237 页)

    但是,作者继续说:“我们已经说过,事实表中的一行与特定产品、特定日历日期、特定客户和单个销售代表相关。换句话说,对于一个特定的产品,一个特定的日历日期,一个特定的客户,以及一个单独的销售代表,在事实表中都有对应的行。当日期代表一个休息日并且没有收到和处理订单时会发生什么?事实表此类日期的行将没有度量值。也可能存在维度表属性的其他组合,事实表行将具有空度量值的值。我们是否需要在事实表中保留具有空度量值的这些行?没有必要这样做。因此,实现这种稀疏数据并了解事实表可能存在间隙非常重要。"

    总之,你们似乎是对的,谢谢!

    【讨论】:

    • 希望您的讲师不会相信每个客户每天都从每个销售代表那里购买每个产品。在没有要记录的事实(例如销售)的情况下,事实表行通常不存在。
    • @David 奇怪的是,我认为 Kimball 在他的一本书中使用的快照事实示例几乎与您所描述的完全一样:一个 CRM 仓库,每天为每个客户填充一行,无论是客户是否完成了交易。正如 Kimball 先生所说的很多内容一样,我对此持怀疑态度和谨慎态度。
    • @David,实际上,我的讲师做到了......但我会用一小撮盐来接受它。显然它的价值在下学期的数据挖掘中变得明显
    【解决方案3】:

    当然不是。我建议你让你的消息来源澄清这个说法,这听起来好像这里有什么误解。

    如果你添加一个时间维度..呢? 此外,甚至不可能将空值作为缺少促销的键,因为键的原因是指向一个维度值,而空值没有这样做。

    维度值可以支持您拥有的任何事实,而不是相反。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多