首页 文章

如何在SSIS数据流中的两个源之间获得不匹配的数据?

提问于
浏览
3

我有两个数据源,一个是sql表,一个是平面文件(csv) . 两个来源都有完全相同的列 . 示例数据:

表:

HCN  Name  Surname   DOB
111  John   Black    2013-12-10
222  Jack   White    1989-01-14
333  Brian  Brown    2000-04-22

FLATFILE:

HCN  Name  Surname   DOB
111  John   Black    2013-12-10
444  Alex   Smith    1978-05-16

请注意,列HCN是主键 . 我需要做的是获得表中包含的这些记录,但FlatFile .

预期产量:

HCN  Name  Surname   DOB
222  Jack   White    1989-01-14
333  Brian  Brown    2000-04-22

我必须在我的SSIS包的数据流中执行此操作 . 我在下面做的是获得匹配的记录(HCN:111),但我怎么能得到我无法弄清楚的无法匹敌的记录 . 任何帮助,将不胜感激 .

enter image description here

2 回答

  • 4

    SOLUTION 1 : LOOKUP:
    您可以按照以下步骤操作:

    • 添加查找转换
      在连接选项卡中,选择您的flatfile连接
      在列选项卡中,将“联接”列拖放到“常规”选项卡中,通过重定向行处理不匹配的条目

    • 将非匹配输出重定向到目标

    enter image description here

    SOLUTION 2 : LEFT ANTI JOIN

    您可以按照以下步骤操作:

    1 对数据集进行排序/或将源的属性修改为isSorted = true

    2 在键上使用LEFT JOIN,并添加一个包含右侧id的新列

    3 在右侧添加条件拆分条件ID为空

    然后将CASE 1分割数据重定向到您的目的地,您只有左侧的行没有右侧对应

    enter image description here

  • 3

    首先,我建议您将平面文件数据加载到OLEDB登台表中,这是可选的 . 如果将平面文件数据加载到目标,则可以将主键对齐以进行查找 .

    创建一个临时表来插入不匹配的记录,在这种情况下只需要异步转换

    请参阅下面的查找转换
    enter image description here

    检查查找列:

    这是一个例子

    enter image description here

相关问题