我们可以比较多个输入文件的列以在SSIS中派​​生一个新列吗

时间:2019-06-29 10:57:35

标签: csv ssis etl flat-file

我试图基于不同输入文件中提供的列创建派生列,但是不幸的是,当我尝试将我的Raw_File_1与派生列进行映射时,我不断收到错误消息。错误看起来像这样: < / p>

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

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

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

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

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

enter image description here

2 个答案:

答案 0 :(得分:1)

您的问题不清楚,我将尝试提出一些建议:

如果要使用派生列执行查找:

您可以使用“缓存转换”组件和“缓存连接管理器”来实现:

如果您希望合并两个输入:

然后,您需要使用合并联接或联合所有组件:

答案 1 :(得分:1)

根据我在问题中打过的评论,您希望基于参考文件中的匹配数据来扩充现有数据。

您的SSIS软件包的核心看起来像这样

Control flow has 2 data flow tasks

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

enter image description here

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

enter image description here

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

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

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

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

enter image description here

最终想法

这将区分大小写。如果在参考文件中没有匹配项,它将崩溃。那可能不是您想要的,所以将Lookup转换配置为不这样做;)

如果您想要更多单词http://billfellows.blogspot.com/2011/11/using-excel-in-ssis-lookup.html

,我曾写过一篇关于使用Excel填充缓存的博客。