我有一个需要连接到维度表的事实表,但是从源数据中获取该关系并不容易。事实表是从具有大约一百万行的源表加载的,因此根据最佳实践,我使用之前的运行日期来仅选择自上次运行以来添加的源行。获取我想要加载的行后,我需要通过3个其他表,以便能够查找维度表。 3个表中的每一个也有大约一百万行。
我读过最佳实践说不提取您不需要的源数据。最佳实践还说在源系统上尽可能轻触,因此避免了sql连接。但就我而言,这两个最佳实践变得相互排斥。如果我只在itermediary表中提取更改的行,那么我需要在源查询中进行连接。如果我从源系统中提取所有行,那么我提取的数据量超出了我的需要,这可能会导致SSIS内存/性能问题。
我倾向于加入源数据的提取,但我一直无法找到关于该方法的优点和缺点的任何讨论。这是正确还是不正确? (源表和DW表在Oracle中)。
答案 0 :(得分:3)
您可以暂存您引用的3个源表吗?您可能不需要它们在DW中,但您可以让它们完全用于此目的而位于临时数据库中。但是你仍然需要保持这些最新状态,但假设你可以完全改变,这可能不会太糟糕。