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

时间:2015-05-29 12:53:28

标签: ssis data-warehouse business-intelligence bids

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

  1. 使用聚合转换,然后使用“分组依据”操作。
  2. 删除重复项时使用排序转换。
  3. 我不确定哪一个更好(更高效),或者哪个更广泛地采用在行业中。

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

    P.S。在此处使用来自源的SELECT DISTINCT不是一个选项。

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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