【问题标题】:Can we compare columns of multiple inputs file to derive a new column in SSIS我们可以比较多个输入文件的列以在 SSIS 中派生一个新列吗
【发布时间】:2019-11-11 00:10:36
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 帮助我了解您在这里要做什么。您有一个源文件和一个 ?reference 文件。对于源中的值,您想匹配参考/映射文件并向您的工作流程添加其他数据?示例将大大改善这个问题(点击编辑按钮)
  • 很难理解你想做什么。如果你展示一些基本的示例数据,我相信它会有所帮助。
  • @billinkc 你明白了。是的,我有源文件和参考文件都是平面文件。我的源文件有 a 列、b 列和 c 列,我的参考文件有 d 列、e 列和 f 列。如果a=column d 和column b=column f 那么我想将c 列填充为与f 列相同的值。我如何在 SSIS 中进行这种分析或查找?希望这能解释它。
  • @Nick.McDermaid 我只是在几秒钟前在上面的评论中解释了问题。希望这能解释问题。谢谢

标签: csv ssis etl flat-file


【解决方案1】:

根据我在问题中修补的 cmets,您希望根据参考文件中的匹配数据来扩充现有数据。

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

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

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

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

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

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

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

最后的想法

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

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

,我曾写过有关使用 Excel 填充缓存的博客

【讨论】:

  • 非常感谢,这是有用的信息。我今晚会试试这个选项,看看这是否能解决我的问题。
【解决方案2】:

你的问题不清楚,我会尽量给出一些建议:

如果您希望使用派生列执行查找:

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

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

那么你需要使用 Merge Join 或 Union 所有组件:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多