向输入数据添加两个额外列-Pentaho釜

向输入数据添加两个额外列-Pentaho釜,pentaho,kettle,geokettle,Pentaho,Kettle,Geokettle,我正在进行Pentaho水壶的改造步骤。它选择几个输入列,并在此基础上在转换期间添加两个新列。我无法理解(基于其他插件的代码),如何添加两个新列,以便1)下游步骤知道这些列,2)将转换后的数据推送到这些列中 提前感谢。如果我正确理解了您的问题,我认为您正在尝试创建一个带有动态列的输出文件。因此,您可以通过选中文本文件输出步骤中的“快速转储”选项来实现这一点。执行此操作时,不要在“字段”选项卡中定义任何列名 查看下面的图片: 希望有帮助:)您可能需要重写meta.getStepFields()

我正在进行Pentaho水壶的改造步骤。它选择几个输入列,并在此基础上在转换期间添加两个新列。我无法理解(基于其他插件的代码),如何添加两个新列,以便1)下游步骤知道这些列,2)将转换后的数据推送到这些列中


提前感谢。

如果我正确理解了您的问题,我认为您正在尝试创建一个带有动态列的输出文件。因此,您可以通过选中文本文件输出步骤中的“快速转储”选项来实现这一点。执行此操作时,不要在“字段”选项卡中定义任何列名 查看下面的图片:


希望有帮助:)

您可能需要重写meta.getStepFields()以将新的ValueMetaInterface对象添加到传入的RowMetaInterface中。这是在运行时添加列的标准方法;但是,行的元数据(即ValueMetaInterface对象的列表)必须在各行之间相同,否则转换的下一步会出现问题

通常,在执行数据驱动的自定义插件时,您需要消耗尽可能多的行(使用getRow()),以确定传出行的格式/元数据是什么,然后您可以构造一个RowMetaInterface(通常使用meta.getStepFields()),将其传递到putRow()调用中。如果要通过传入字段,请执行以下操作:

RowMetaInterface outputRowMeta=getInputRowMeta().clone()

如果要创建新行,请使用以下命令:

RowMetaInterface outputRowMeta=新的RowMeta()

无论哪种方式,当您调用meta.getStepFields(outputRowMeta,…)时,它都应该通过从outputRowMeta中添加/更改/删除ValueMetaInterface对象来使用适当的字段填充outputRowMeta

我有一篇博客文章使用Groovy在这里添加/替换传入行中的字段:


不确定这是否与您的用例相似。如果您有更多问题,请随时在IRC上找到我,网址是##pentaho(我的尼克通常是mburges_pdi)

您可以编辑您的问题以包括您的转换的屏幕摘要吗?我的步骤是一个自定义插件,我正在开发,我需要从上游收集行,处理它,添加两列并将其发送到下游。