我有许多字段都需要相同的重新编码,是否有一种转换可以让我指定所有需要相同映射的字段,而不是必须为每个字段创建一个值映射器转换?我正在使用水壶勺 4.4
问问题
2425 次
1 回答
3
我不是 Kettle 上的 Java Scripting 的忠实粉丝,但我不知道有任何其他标准步骤可以满足您的要求。
您可以将修改后的 Java 脚本步骤添加到流中并编写简单的代码来映射字段(列)列表的值。为了实现这一点,假设您有字段A
,并且B
两者都有两个可能S
的小值和B
大值。要映射它们,您应该插入以下 javascript 代码:
// list of fields you wish to map
var fieldsToMap = ["A", "B"];
var tmpField;
var fieldIndex;
// for each field to map...
for (var i=0; i < fieldsToMap.length; i++) {
//get the index of the field once you only have it's name
fieldIndex = getInputRowMeta().indexOfValue(fieldsToMap[i]);
//get the field
tmpField = row.getValue(fieldIndex);
//don't forget to trim as Kettle usually pads strings
switch (trim(tmpField)) {
case "S":
tmpField.setValue("Small");
break;
case "B":
tmpField.setValue("Big");
break;
}
}
不要忘记检查Compatibility mode?
Java Script 步骤,否则一旦使用新标准,您将遇到 javascript 错误,您不能再更改字段值(请参阅如何修改值(关闭兼容性) http : //wiki.pentaho.com/display/EAI/Modified+Java+Script+Value )
于 2013-07-05T14:00:51.730 回答