【问题标题】:Sorting Merge Join output排序合并连接输出
【发布时间】:2018-02-26 10:20:06
【问题描述】:

我在数据流任务中有两个合并联接。我想为第二个合并连接的输入设置 IsSorted 属性。 但它给出了错误,因为“必须在此转换的两个源上将 IsSorted 属性设置为 True”。 下面是这个的图片:

更新 1

从下面的答案和 cmets 中,可以在数据源 (Excel + OLEDB) 高级编辑器中找到 IsSorted 属性。但是合并连接转换没有这个属性。我需要在不使用排序组件的情况下将第一个 Merge Join 输出与 Excel 源合并。

【问题讨论】:

  • 我认为在将输入添加到“合并”任务之前,您必须使用“排序”数据流任务。
  • 我不想在这个中使用排序任务。
  • 我试图重现您的问题,但无法重现。我将合并连接的输入作为另一个合并连接。确保您的 practice locations 已通过高级属性排序。
  • 但我认为 Union All 在 sql server 中用作联合操作。我不想那样做。我只想做左连接操作。
  • 右键单击您的数据源并选择Show Advanced Editor...IsSorted 属性位于 Input and Output Properties 选项卡中

标签: sql-server merge ssis etl dataflowtask


【解决方案1】:

更新 2(解决方法)

在合并连接之后添加一个脚本组件,您将在其中添加一个输出列(将用作第二个连接键)。在脚本中,只需将原始键值分配给该列即可。

然后在脚本输入输出属性中,将Output IsSorted属性设置为True

例子:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

    Output0Buffer.AddRow()
    Output0Buffer.outEmployeeName = Row.EmployeeName
    Output0Buffer.outEmployeeNumber = Row.EmployeeNumber
    Output0Buffer.outLoginName = Row.LogineName


End Sub

更新 1

如果您希望从合并连接转换生成排序输出,那么我建议您点击此链接:

初步回答

IsSorted 属性可以从高级编辑器中编辑,

只需右键单击OLEDB Source(或Excel Source,如果需要),转到Input and Output Properties,单击输出,您将在属性选项卡中找到IsSorted 属性

然后你应该为列设置SortKeyPosition

【讨论】:

  • 我这样做了,但它只适用于第一次合并连接。它不适用于第二个。
  • 如果下一个合并连接是使用 excel 源,那么您必须在 Excel Source 上设置 IsSorted 属性
  • @AmolR 第二次合并连接的输入是什么?
  • 感谢您的链接。但他们使用排序转换进行排序。由于性能问题,我不想使用它。我只是想设置 IsSorted 属性并完成工作。
  • 在 Excel 工作簿上小心 IsSorted = true。如果数据开始未排序,您将在负载中得到重复。我很难学到这一课。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2021-01-24
  • 2021-09-12
相关资源
最近更新 更多