2

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

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

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

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

4

2 回答 2

1

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

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

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

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

于 2012-12-12T17:46:26.877 回答
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 版的状态

于 2013-09-10T11:58:46.900 回答