SSIS中的聚合转换与排序(删除重复)

Lea*_*ing 1 ssis data-warehouse bids business-intelligence

我正在尝试定期填充维度表,我想到了两种为我的维度获取不同值的方法:

  1. 使用聚合转换,然后使用"分组依据"操作.
  2. 删除重复项时使用排序转换.

我不确定哪一个更好(更高效),或哪个更广泛地采用在该行业.

我尝试使用虚拟数据执行一些测试,但我无法得到一个可靠的答案.

PS SELECT DISTINCT在这里使用来源不是一个选择.

Jo *_*ass 6

如果可能的话,我的第一选择始终是在我的源查询中更正此问题.我意识到这并不总是一种选择,但为了未来读者的完整性:我首先要检查我的源查询中是否存在创建重复项的问题.每当DISTINCT看起来有必要时,我首先看看是否存在需要解析的查询问题.

我的第二个选择是DISTINCT- 如果可能的话 - 因为这是在SQL中解决的可能性比在SSIS中更快的情况之一; 但我意识到这不适合你.

从那时起,您可能会遇到可能需要尝试其余选项的情况.除了在SSIS中使用聚合或排序之外,您还可以将结果转储到临时表中,然后使用单独的数据流DISTINCT在其源查询中使用a .聚合和排序都是阻止SSIS中的事务,因此使用登台表可能会更快 - 但对您来说最快的将取决于许多因素,包括数据的性质以及基础结构的性质.如果使用SSIS选项,您可能还需要记住并行运行的其他内容,因为它们可能会占用大量内存.

如果您的数据是(或可以)在源查询或源查询中排序,那么在下面的链接中也有一个聪明的想法,即使用脚本任务创建Aggregate和Sort的"半阻塞"版本:

http://social.technet.microsoft.com/wiki/contents/articles/30703.ssis-implementing-a-faster-distinct-sort-or-aggregate-transformation.aspx