【问题标题】:Result of SSIS Merge JoinSSIS Merge Join 的结果
【发布时间】:2018-04-25 10:00:34
【问题描述】:

我有两个数据源 - 文档和客户,我想加入它们,创建包含来自文档和客户的信息的行,并将 customer_code 作为键。

最后,在我预期的 30k 结果中,我只得到了 58 个。

缺陷在哪里?

【问题讨论】:

  • customer_code列的数据类型是什么
  • 从Excel中可以看出,有两个“General”切换到“Text”,结果一样
  • customer_code 包含数字或字符或两者兼有?
  • 您可以做的第一件事是在Merge Join 之前添加一个排序组件。阅读我的答案以获取更多信息
  • 我还在等你的回复!!

标签: sql-server excel merge ssis etl


【解决方案1】:

需要考虑的许多事项:

  1. 当导入带有混合数据类型列的 excel 文件时,它会将非主要类型替换为 null。 (使用 Oledb 或 Ace.Oledb)

如果 Customer_code 列包含多种数据类型(例如:数字、存储为文本的数字),则非主要数据类型字段将设置为 null。所以你有一个列中的所有值都以相同的数据类型存储在excel中(你必须打开excel来检查)

您可以阅读更多@Importing data from Excel having Mixed Data Types in a column (SSIS)

  1. 如果customer_No包含字符,则必须确保两个excel文件中的值具有相同的大小写(加入ssis区分大小写),或者您必须添加两个派生列转换使用以下表达式将两个 Customer_Code 列转换为大写:

    UPPER([Customer_Code])
    
  2. 根据Microsoft article“在集成服务中,合并和合并连接转换需要对其输入的排序数据。输入数据必须进行物理排序,并且排序选项必须设置在输出和源或上游转换中的输出列。如果排序选项指示数据已排序,但数据实际上并未排序,则合并或合并连接操作的结果是不可预测的"

所以在合并加入之前尝试在每个源上添加排序组件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多