1
我有很多字段都需要相同的重新編碼,是否有一個轉換,將允許我指定所有需要相同映射的字段,而不是必須爲每個字段創建一個Value Mapper轉換?我正在使用水壺勺4.4如何重新編碼水壺中的許多字段,所有這些都需要相同的重新編碼
我有很多字段都需要相同的重新編碼,是否有一個轉換,將允許我指定所有需要相同映射的字段,而不是必須爲每個字段創建一個Value Mapper轉換?我正在使用水壺勺4.4如何重新編碼水壺中的許多字段,所有這些都需要相同的重新編碼
我不是一個Java腳本對水壺的狂熱愛好者,但我不知道任何其他標準步驟是否符合您的願望。
您可以在您的流中添加修改後的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;
}
}
不要忘了在Java腳本一步檢查Compatibility mode?
,否則你會與你不允許改變,新標準有一個JavaScript錯誤一次(請參閱如何修改數值(關閉兼容性) at http://wiki.pentaho.com/display/EAI/Modified+Java+Script+Value)
謝謝,這將有助於 –