【问题标题】:Map multiple columns from multiple files which are slightly different从略有不同的多个文件映射多个列
【发布时间】:2012-09-27 01:56:36
【问题描述】:

我正在寻找一种实用的方法来处理 Talend 中的批处理 ETL 作业的架构略有不同的多个文件之间的元数据规范化。

我有几百个历史报告(每个记录大约 25K 到 200K 条记录),每个 Excel 文件大约有 100 到 150 列。所有文件的大多数列名都相同(98% 重叠),但存在细微的邪恶差异:

  • 不同的列顺序
  • 不同的列名(有时使用有时不使用缩写)
  • 不同的列数
  • 有时列在单词之间有空格,有时还有点、破折号或下划线
  • 等

除了编写专门的应用程序或通过手动更正它们来强制所有文件,是否有任何好的免费工具或方法可以智能或半自动方式提供文件列名之间的差异和更正?

【问题讨论】:

    标签: java excel etl normalize talend


    【解决方案1】:

    您可以使用Talend Open Studio 来实现这一点。但我确实看到了一个警告。

    官方方式

    1. 为了让 Talend 理解您的 Excel 文件,您需要先加载它的元数据。需要注意的是,您需要手动(一个一个)加载所有元数据。免费版 Talend(Open Studio Data)不支持动态元数据。

    2. 使用 tMap 之类的组件,您可以将输入元数据映射到所需的输出元数据(可以是 Excel 文件或数据库或其他内容)。在此步骤中,您可以将输入数据塑造成您想要的输出(修复/忽略/转换它/等)。

    非官方方式

    似乎存在一个用户贡献的组件,它提供对 Excel 动态元数据的支持。我没有测试它,但值得一试: http://www.talendforge.org/exchange/?eid=663&product=tos&action=view&nav=1,1,1

    这可以随着组件的发布和频繁更新而发展。 我的回答是关于 5.3.1 版的状态

    【讨论】:

    • 这基本上与我的研究得出的令人不满意的答案相同。我接受了这个答案,但决定使用选项“C”并推出我自己的应用程序,该应用程序在输入文件被 Talend 处理之前对其进行了预处理。
    【解决方案2】:

    我暂时将其写为“答案”,因为我手头没有链接来演示它是如何完成的。但是 Pentaho 数据集成提供了一种很好的方式来加载这样的文件 - 有一种方法可以在第一次转换中读取文件的元数据,我的意思是列名,然后您可以使用“元数据注入”功能将元数据注入到读取文件的下一个转换中。

    现在;在您的列名略有不同的情况下,您必须以某种方式进行一些额外的映射。也许您可以在某处存储“别名”列名和实际列名的查找表。

    无论哪种方式,这听起来都是一项非常复杂/令人讨厌的自动化任务!

    我没有看到任何方法可以在 Talend 中处理文件的不同元数据 - 虽然很高兴在这一点上得到更正!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多