【问题标题】:"NOT EXISTS" in SSIS data flowSSIS 数据流中的“不存在”
【发布时间】:2015-07-06 19:10:53
【问题描述】:

我有一个数据流,我需要将来自两个不同来源的数据合并到一个目标表中,但也只想插入唯一值而忽略现有值。

行键由两列组成,我将其转换为 SHA1 哈希以便更容易合并。

我做“不存在”的方式是通过“左外连接”合并连接,我得到右连接,然后我使用条件拆分来只获取空值。

每个源都按哈希排序。现有数据源被多播到两个连接以检查现有值,我只想要新的。

我遇到的问题是,尽管至少对我而言,一切看起来都不错,但我仍然遇到唯一键违规(source1 和 source2 都产生完全不同的键,并且数据集中的键是唯一的)而且我无法追踪问题。

我尝试通过添加更多排序来减慢一切,即使在“现有数据”源完成后,它仍然会产生唯一的键违规。

【问题讨论】:

  • 无聊的现实是,如果您使用数据流将源数据完全导入临时表,然后使用更新目标表的存储过程进行所有这些清理,您可能会获得更好的性能.
  • 呸呸呸。是的,我倾向于那个。很快我就会有比非临时表更多的临时表,已经有很多了

标签: sql-server ssis


【解决方案1】:

如果您要执行 NOT Exists 操作,则应使用配置了“重定向不匹配输出”的完整缓存中的 LOOKUP 组件。性能相当不错。

这个例子可能会有所帮助:http://www.rad.pasfu.com/index.php?/archives/46-SSIS-Upsert-With-Lookup-Transform.html

希望对您有所帮助,

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多