2013-07-04 15 views

回答

3

我不是一个Java脚本对水壶的狂热爱好者,但我不知道任何其他标准步骤是否符合您的愿望。

您可以在您的流中添加修改后的Java脚本步骤,并编写一个简单的代码来映​​射字段列(列)的值。要做到这一点,假设您有AB这两个字段,其中有两个可能的值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; 
    } 
} 

不要忘了在Java脚本一步检查Compatibility mode?,否则你会与你不允许改变,新标准有一个JavaScript错误一次(请参阅如何修改数值(关闭兼容性) at http://wiki.pentaho.com/display/EAI/Modified+Java+Script+Value

+0

谢谢,这将有助于 –