在管理数据转换的同时,如何在spoon,pentaho中按列合并2个csv文件?

时间:2011-07-18 22:57:52

标签: csv pentaho kettle

我遇到了以下问题:

我有两个输入:
1)我有一个包含35列及其正确标题的csv基本文件 2)我有各种给定的文件,不受我控制,可能包含或不包含35列,更糟糕的是,它们可能会出现故障。

我必须将第二个csv文件中的列与第一个csv文件中的列相匹配。如果第二个csv文件没有全部35列,我应该按照正确的顺序创建它们。

一旦我有一个正确的csv文件(标题看起来像第一个csv标题),我会将它传递给一个脚本,该脚本管理通过列标题引用它们的数据。

一种可能的解决方案是在脚本中获取现有的字段输入,但是,我无法做到这一点,因为这些字段似乎是固定的,引用了第二个csv文件的现有列标题。因此,当我尝试访问不存在的列时,我最终会遇到异常......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

This is an example data widening.

术语“第二个csv中的字段无序”可能有多种含义

  1. csv文件的相同来源,但不时有不同字段的顺序
  2. csv文件中字段(列号)的位置在不同来源提供的文件中不同。
  3. 第一种情况真的很奇怪。相同的源应提供相同的数据,如果不是这样,则做出决策的逻辑可能非常复杂。

    第二种情况看起来更真实。在这种情况下,你可以使所有源到35个字段宽。然后你需要识别字段。水壶中有很多工具可用于检测数据类型,字符串操作,正则表达式等。

    实际上听起来你需要自动检测字段。

    但没有真实的数据,很难看到模式。由于你在数据库级别上实现了这种字段检测逻辑,因此也可以在水壶中使用。

    无论如何如果逻辑非常复杂,那么使用JavaStep,JavaScript。