我的理解是先提取维度,再提取事实。这样,外键仍将在暂存区得到尊重。
加载时,出于同样明显的原因,应该使用相同的顺序。所以。最终的订单应该是这样的 -
提取维度 -> 提取事实 -> 加载维度 -> 加载事实
当我浏览 DAC 文档时,我遇到了一篇文章,上面说顺序应该是这样的 =
提取事实 -> 提取维度 -> 加载维度 -> 加载事实
想法/建议/意见..
我的理解是先提取维度,再提取事实。这样,外键仍将在暂存区得到尊重。
加载时,出于同样明显的原因,应该使用相同的顺序。所以。最终的订单应该是这样的 -
提取维度 -> 提取事实 -> 加载维度 -> 加载事实
当我浏览 DAC 文档时,我遇到了一篇文章,上面说顺序应该是这样的 =
提取事实 -> 提取维度 -> 加载维度 -> 加载事实
想法/建议/意见..
我怀疑作者的想法可能是:当你加载新数据时,首先确定你感兴趣的事实,以确保你处理和加载的数据量最少。然后从这些事实中导出您的维度,因此您只填充您实际需要的维度值。
我不知道这种解释是否正确,但我可以想象有人提出这个论点。另一方面,知道哪些维度值没有对应的事实通常非常有趣,例如哪些客户还没有购买新产品。
因此,您在环境中处理数据的方式在很大程度上取决于您自己的要求,我不会太担心单个文档的内容。
可能为时已晚,但以防万一有人遇到这个问题,这里有一些澄清。
数据仓库通常建立在不强制引用完整性的存储系统上,或者因为它是它的固有特征(Redshift、Hive 等),或者因为如果系统允许它(如经典 RDBMS),它们会导致额外的开销/性能影响。
因此,建议的顺序
extract fact -> extract dimension -> load dimension -> load fact
旨在保证参照完整性。
如果我们首先提取事实,我们将确保一旦我们提取维度,所有事实将指向仓库中的有效维度/现有维度。
通过首先加载维度(假设采用 Kimball 建模方法),加载事实后,您将能够将它们与一致的维度连接起来并成功检索维度代理键。