【问题标题】:SSIS Merge Transformation sorting for multiple columns多列的 SSIS 合并转换排序
【发布时间】:2024-01-18 20:16:02
【问题描述】:

我已经阅读了Merge Transformation 上的各种文档,他们都说必须对数据进行排序,但没有人谈论哪些列以及如何决定要对哪些列进行排序。例如,如果我的合并连接条件在多个列上,那么是否需要对所有列进行排序?

我的生产数据有 3+ 百万行并且合并有效,但我无法验证确定是否需要对更多列进行排序是否准确。我尝试创建测试/虚拟数据,但如果我执行一种或多种排序,则输出与预期的一样,所以我不确定我应该做什么。

【问题讨论】:

  • 您需要对其进行排序,以便两个数据集以相同的方式排序。这意味着您必须使用相同的“键”进行排序。如果是 1 个或 2 个或更多,则取决于您的数据的外观。
  • 您可以在这里阅读更多内容red-gate.com/simple-talk/sql/ssis/…
  • 谢谢@plaidDK。我也看过那篇文章,但它没有谈论哪些列,只是必须对数据进行排序。谢谢!

标签: sql-server sorting merge ssis etl


【解决方案1】:

要进行合并连接,您必须对将用于连接两个表的所有列进行排序,并且排序的顺序必须相同。

示例:如果您有两个表:

  • 表 1(姓名、年龄、地址)
  • 表 2(全名、年龄、联系人)

您需要加入Name = Fullname AND Age = Age,因此您必须对两个表中的两列进行排序,并且每两个相关列必须具有相同的顺序:

  • 表 1:姓名(顺序 1)、年龄(顺序 2)(类似于 ORDER BY Name,Age
  • 表 2:全名(顺序 1)、年龄(顺序 2)(类似于 ORDER BY FullName,Age

@PlaidDK 在 cmets 中提供了一个非常有用的link,您可以在其中获取更多详细信息


旁注:您可以使用 SORT 组件对列进行排序,或者如果使用 OLEDB 命令作为源,您可以在命令中使用 ORDER BY 子句并将列标记为已排序(在高级编辑器中)

【讨论】:

  • 太棒了。这对我有很大帮助。谢谢!