Pentaho/Kettle Javascript:动态调用字段

Pentaho/Kettle Javascript: Calling a field dynamically

本文关键字:动态 调用 字段 Javascript Kettle Pentaho      更新时间:2024-01-22

我试图检索字段的值,但我需要动态构建字段的名称。

想象一下,我把去年按天出生的人放在以天编号命名的列中。所以有DAY_1、DAY_2、DAY_3等列,它们的值分别是5、12、33。。。我想在所有这些值上做一个循环,为此我建立了一个普通的字段名称:

var column_name="DAY_"+i

所以以后我可以一个接一个地循环增加I。

问题是javascript无法将DAY_i识别为有效的输入字段,因此我无法检索字段的值,Pentaho将其作为字符串处理。

在javascript步骤中有一个数组变量row。您可以使用getInputRowMeta().indexOfValue("DAY_" + i)查找列的索引,然后使用该索引获取当前行中字段的值:

var column_name = "DAY_" + i;
var column_index = getInputRowMeta().indexOfValue(column_name);
var column_value = row[column_index];

请注意,column_value将引用某种Java类型的对象(例如Java.lang.String),因此JavaScriptString方法将不适用于此值。您需要将值转换为javascript类型或使用java方法。

对于动态获取输入字段值,您可以使用以下代码:

var column_index = getInputRowMeta().indexOfValue(column_name);
var valor = row[column_index];
var valorString = null;
if (valor != null) {
  var valueMeta = getInputRowMeta().getValueMeta(column_index);
  valorString = valueMeta.getString(valor);
}

变量";valorString";将包含所需的值。