使用基本星型模式,我被告知事实表的行数至少等于每个维度中行数的乘积。
例如,3 个产品、5 个促销和 10 个商店意味着事实表应该至少有 150 条记录,而不管产品实际上在哪里进行了每个促销或存在于每个商店中。具体来说,空值将存在于例如产品没有特定促销等的情况下。
有人可以提供支持的学术来源,或者至少,请确认这个想法。
我问这个的原因是我的理解告诉我这会在事实表中创建大量无用的数据。
谢谢!
使用基本星型模式,我被告知事实表的行数至少等于每个维度中行数的乘积。
例如,3 个产品、5 个促销和 10 个商店意味着事实表应该至少有 150 条记录,而不管产品实际上在哪里进行了每个促销或存在于每个商店中。具体来说,空值将存在于例如产品没有特定促销等的情况下。
有人可以提供支持的学术来源,或者至少,请确认这个想法。
我问这个的原因是我的理解告诉我这会在事实表中创建大量无用的数据。
谢谢!
您好,感谢您的回复。我咨询了我的讲师,他实际上为我找到了一个页面参考:“......举一个非常简单的例子,在维度表中以行表示 3 个产品、5 个客户、30 天和 10 个销售代表。即使在这个例子中,事实表行数将为 4500,与维度表行相比非常大......”(Ponniah, P., 2009。数据仓库:IT 专业人员的基础,第 2 版。John Wiley & Sons, Inc.,新泽西州。第 237 页)
然而,作者继续说:“我们已经说过,事实表中的一行与特定产品、特定日历日期、特定客户和单个销售代表有关。换句话说,对于特定的产品、特定日历日期、特定客户和个人销售代表,在事实表中有相应的行。当日期表示休息日并且没有接收和处理订单时会发生什么?这样的事实表行日期将没有度量值。也可能存在维度表属性的其他组合,事实表行将具有空度量的值。我们是否需要在事实表中保留具有空度量的这些行?没有需要这个。因此,了解这种稀疏数据并了解事实表可能存在差距非常重要。”
总之,你们似乎是正确的,谢谢!
当然不是。我建议你让你的消息来源澄清这个说法,这听起来好像这里有什么误解。
如果你添加一个时间维度怎么办..?此外,甚至不可能将空值作为缺少促销的键,因为键的原因是指向一个维度值,而空值没有这样做。
维度值可以支持您拥有的任何事实,而不是相反。
这可能与一种特定类型的事实表有关:Ralph Kimball 称之为Periodic Snapshot Fact Table的模式。这就是事实表在每个时间点重复整个行群的地方。IMO 这种方法的用处是极其有限的。
快照事实表并不隐含地要求事实表是其维度的乘积,但它确实提出了每个快照的正确人口应该是多少的潜在问题。我想维度的叉积是一种方法。