【问题标题】:Aggregate Transformation vs Sort (remove Duplicate) in SSISSSIS中的聚合转换与排序(删除重复项)
【发布时间】:2015-05-29 12:53:28
【问题描述】:

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

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

我不确定哪一种更好(更高效),或者哪一种在行业中被更广泛地采用。

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

附:从源代码使用SELECT DISTINCT 不是这里的选项。

【问题讨论】:

    标签: ssis data-warehouse business-intelligence bids


    【解决方案1】:

    如果可能,我的第一选择始终是在我的源查询中更正此问题。我意识到这并不总是一种选择,但为了未来读者的完整性:我会首先检查我的源查询中是否存在创建重复项的问题。每当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

    【讨论】:

    • 这与其说是基础表中的重复问题,不如说是从源接收的数据的性质必须生成完整的行,并且必须对基础数据库进行非规范化。不过还是谢谢你的回复,对我很有用。
    • 我喜欢你引用的来源。其他人没有发布更新的答案。谢谢!
    猜你喜欢
    • 2013-05-02
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2020-06-21
    相关资源
    最近更新 更多