首页 > 解决方案 > 我们可以比较多个输入文件的列以在 SSIS 中派生一个新列吗

问题描述

我正在尝试根据不同输入文件中提供的列创建派生列,但不幸的是,当我尝试将 Raw_File_1 与派生列映射时,我不断收到错误消息。错误如下所示:

无法创建连接器。目标组件没有任何可用于创建路径的输入。

我的目标是能够将 Raw_File_1 和 Map_File_1 连接到派生列并生成一个新列。

如果有人可以给我任何建议,那就太好了!!

我有源文件和参考文件都是平面文件。我的源文件有 a 列、b 列和 c 列,我的参考文件有 d 列、e 列和 f 列。

如果 a=column d 和 b=column f 列,那么我想将 c 列填充为与 f 列相同的值。如何在 SSIS 中进行这种分析或查找

在此处输入图像描述

标签: csvssisetlflat-file

解决方案


根据您对问题的评论,您希望根据参考文件中的匹配数据来扩充现有数据。

您的 SSIS 包的核心将如下所示

控制流有2个数据流任务

在第一个数据流中,我们将从 map_file_1 获取数据并加载到“原始”文件中。

在此处输入图像描述

我像这样配置我的原始文件目标

在此处输入图像描述

当包运行时,它将使用参考数据填充该特殊格式文件。这很重要,因为您可以使用数据库或原始文件作为查找源。

最后,我们开始工作!查找组件的平面文件源。在该查找的第一个选项卡中,确保将连接类型从默认的“OLE DB 连接管理器”更改为“缓存连接管理器”

在 Connection 选项卡中,单击 以创建新的 CCM 并使用上一步中生成的原始文件。

将列 A 映射到 D 和 B 到 E(假设数据类型匹配)。单击列 F 和部件中的复选框Lookup Operation,将 C 替换为该值。

在此处输入图像描述

最后的想法

这将是一个区分大小写的查找。如果事情在参考文件中没有匹配,它就会爆炸。这可能不是您想要的,因此将查找转换配置为不这样做;)

如果你想要更多的话,我写过关于使用 Excel 填充缓存的博客http://billfellows.blogspot.com/2011/11/using-excel-in-ssis-lookup.html


推荐阅读