【发布时间】:2012-05-04 15:04:47
【问题描述】:
我有一个需要连接到维度表的事实表,但是从源数据中获取这种关系并不容易。事实表是从具有大约一百万行的源表中加载的,因此根据最佳实践,我使用上一次运行日期来仅选择自上一次运行以来添加的源行。在获得我希望加载的行之后,我需要通过 3 个其他表才能对维度表进行查找。这 3 个表中的每一个也有大约一百万行。
我了解到,最佳做法是不要提取您知道不需要的源数据。最佳实践还说在源系统上尽可能轻触,因此避免 sql 连接。但就我而言,这两个最佳实践变得相互排斥。如果我只在中间表中提取更改的行,那么我需要在源查询中进行连接。如果我从源系统中提取所有行,那么我提取的数据比我需要的多得多,这可能会导致 SSIS 内存/性能问题。
我倾向于加入源数据的提取,但我一直无法找到任何关于这种方法的优缺点的讨论。这是正确的还是不正确的? (源表和DW表在Oracle中)。
【问题讨论】:
-
我发现如果不在源系统上使用连接,就完全不可能获取事实或维度数据。如果由于某种原因速度很慢,您可以要求 DBA 创建一个或两个索引。规范化的数据应该使用连接来查询。语句“...因此避免 sql 连接”在语法上纯属无稽之谈。
标签: ssis data-warehouse business-intelligence