SSIS Union All 不返回所有记录
Posted
技术标签:
【中文标题】SSIS Union All 不返回所有记录【英文标题】:SSIS Union All does not return all the records 【发布时间】:2014-02-13 22:48:37 【问题描述】:非常初学者的问题。我有一个简单的脚本,它可以在不同的表中查找记录——在这种情况下,是指派给患者治疗的医生。由于缺乏数据质量控制,许多记录没有分配正确的医生 ID,因此查找返回不匹配的输出。然后我必须为这些记录创建一个虚拟医生。之后,我想将 2 个记录集合并为 1 个。
在我的测试数据库中,我总共有 20599 条记录。查找转换返回提供不匹配输出的 9 124 条记录和提供匹配输出的 11 475 条记录。我不明白的是,当我做一个 Union All 时,结果只得出了总共 17 885 条记录。 (请看下面的截图,出现问题@Find Servicing Doctor 然后Union All)
以前从未遇到过这个问题。我在此脚本的其他部分多次使用相同的技术,它们都返回正确数量的记录。任何帮助将不胜感激
【问题讨论】:
这太奇怪了。如果您修补到 SP1,甚至可能是 CU8,问题是否仍然存在? 我实际上是在 SP1 (11.0.3128.0) 开发环境是在 SQL Server 2012 开发版(64 位)上。 Windows 7 X64 构建 7601 SP1 极不可能,但是如果您在查找之前放置一个行计数转换,在每个查找的输出流上放置一个,在联合所有之后放置一个最终,计数是否都与 GUI 显示的相匹配? @theUnderdog - 首先检查并查看 Union all 是否正确分配了正确的列名。其次,在Union All之前和Union all之后创建一个数据视图.. @Blinkc 计数转换确实与 GUI 显示的匹配 【参考方案1】:您可以在没有 2 条查找路径的情况下执行此操作。
-
您刚刚在第一个查找窗口中设置为“忽略失败”。
添加“派生列”元素并输入如下内容:
ServicingDoctor-Replace'ServicingDoctor'-isnull(ServicingDoctor) ? "NA" : 服务医生
【讨论】:
【参考方案2】:该问题源于更改源或目标中字段的格式。 Union all 转换不会自动更新其输出字段的格式,这显然会导致一些通过转换但不再满足格式的记录消失。删除 Union 所有转换,重新创建一个新转换并将其与其他转换合并即可解决问题。
【讨论】:
以上是关于SSIS Union All 不返回所有记录的主要内容,如果未能解决你的问题,请参考以下文章