我正在尝试检索字段的值,但我需要动态构建字段的名称。
想象一下,我将去年按天出生的人放在名为“天数”的列中。因此,您有 DAY_1、DAY_2、DAY_3 等列。值为 5、12、33... 我想对所有这些值进行循环,为此我构建了动态名称的字段名称:
var 列名 = "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),因此 javascript String 方法将无法处理该值。您需要将值转换为 javascript 类型或使用 java 方法。
关于javascript - Pentaho/Kettle JavaScript : Calling a field dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453505/