我正在使用Pentaho Kettle (PDI)处理数据流,需要创建一些转换来修改csv文件中的字段。每个转换只能作用于一个csv文件的字段。因此,第一个转换应该仅修改文件的第一列中的值,第二个转换应该在另一列上工作,以此类推。由于我花费了很多时间创建单个转换,因此希望将它们重复使用于同类数值的其他任务/转换中。如果您需要一个例子,我已经创建了一个转换,可以改进电话号码(以及其他内容)的质量。
以下是主要任务的“概括”想法:
我的问题在于如何通过转换传递数据。为了做到这一点,每次我都会使用“从结果复制行”步骤将数据放入结果表中。在完成所有修改后,我使用“将行放入结果”步骤将数据放入结果表中。
这里是一个示例(当然,真正的转换比这个更复杂)。
您可能知道,我们必须在“从结果复制行”中指定传入的字段,因此如果我必须在与不同文件一起工作的另一个任务/转换中使用此转换,则必须更改“从结果复制行”的模式。
也许有一种不同的方法来移动数据流,这可能比这种方式更容易。我还考虑过使用参数,但我不知道是否可以使用来自结果表的字段传递它们。这里还有另一个问题:“结果表是从转换中返回值的唯一方法吗?”
我还考虑在转换内并行执行所有转换,仅传递感兴趣的值和键,然后用“合并连接步骤”融合所有单个字段。这也存在同步问题。
因此,有人知道解决这个问题的好方法吗? 我认为存在一种标准方法来解决所有这些问题。
以下是主要任务的“概括”想法:
我的问题在于如何通过转换传递数据。为了做到这一点,每次我都会使用“从结果复制行”步骤将数据放入结果表中。在完成所有修改后,我使用“将行放入结果”步骤将数据放入结果表中。
这里是一个示例(当然,真正的转换比这个更复杂)。
您可能知道,我们必须在“从结果复制行”中指定传入的字段,因此如果我必须在与不同文件一起工作的另一个任务/转换中使用此转换,则必须更改“从结果复制行”的模式。
也许有一种不同的方法来移动数据流,这可能比这种方式更容易。我还考虑过使用参数,但我不知道是否可以使用来自结果表的字段传递它们。这里还有另一个问题:“结果表是从转换中返回值的唯一方法吗?”
我还考虑在转换内并行执行所有转换,仅传递感兴趣的值和键,然后用“合并连接步骤”融合所有单个字段。这也存在同步问题。
因此,有人知道解决这个问题的好方法吗? 我认为存在一种标准方法来解决所有这些问题。