映射略有不同的多个文件中的多个列

我正在寻找一种很好的实用方法来解决在Talend中批量ETL作业的多个文件之间具有略微不同的模式的元数据规范化问题。

我有几百个历史报告(每个25K到200K左右的logging),每个excel文件大约有100到150个列。 大部分列名对于所有文件都是相同的(98%重叠),但是存在微妙的差异:

  • 不同的列顺序
  • 不同的列名称(有时使用,有时不使用缩写)
  • 不同的列数
  • 有时,单词之间有空格,有时也有点,短划线或下划线
  • 等等

写一个专门的应用程序或暴力破解所有的文件,通过手动纠正它们,是否有任何好的免费工具或方法,可以在智能或半自动化方式提供文件列名之间的差异和纠正?

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

官方的方式

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

  2. 使用像tMap这样的组件,您可以将input的元数据映射到您想要的输出元数据(可能是Excel文件或数据库或其他)。 在这个步骤中,你可以将你的input数据转换成你想要的输出(固定/忽略/转换它/等)。

非官方的方式

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

随着组件的发布和频繁更新,这可能会发生变化。 我的回答是关于5.3.1版本的状态

我暂时把它写成一个“答案”,因为我没有链接来展示如何完成它。 然而,Pentaho数据集成提供了一个非常好的方式来加载这样的文件 – 有一种方法,您可以读取第一次转换中的文件的元数据,我的意思是列名称,然后可以使用“元数据注入“function将该元数据注入到读取文件的下一个转换中。

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

无论哪种方式,这听起来像一个非常复杂/讨厌的任务自动化!

我还没有看到任何方法来处理在Talend文件的不同元数据 – 虽然很高兴在这一点上纠正!