Kettle 利用JavaScript程式碼靈活解析資料
阿新 • • 發佈:2021-10-22
前言
關於kettle的JSON字串的解析已經困擾我們很長時間了,我們知道kettle中有JSON輸入控制元件,但這個控制元件用的JSONPATH語法折騰了幾次都沒鬧明白,之前我們一直都是採取寫外掛使用fastjson進行解析的,最近我考慮了一個新的解析思路,就是通過JavaScript控制元件編寫JavaScript程式碼進行解析,需要會一點JavaScript語法,但這樣就非常靈活了,也不用寫外掛那麼麻煩,可以肯定的是這種方式一定比JSON輸入控制元件更靈活,缺點就是要會點JavaScript。
樣例轉換
自定義常量資料
這個使用者定義json字串,實際業務中採用實際的資料來源即可。
執行效果如下:
JavaScript程式碼
JavaScript程式碼如下:
//JSON字串解析示例 //json來源 eval('var js='+LD); //需要輸出的欄位 var NAME = ""; var AGE = ""; //writeToLog("e", jd.data); //個性化處理,js就是一個JavaScript物件。 for(var i=0;i<js.data.length;i++){ //var outputRow = Packages.org.pentaho.di.core.row.RowDataUtil.resizeArray( row, _step_.getOutputRowMeta().size());var outputRow = new Array(_step_.getOutputRowMeta().size()); var data = js.data[i]; //writeToLog("e", data.toString()); outputRow[_step_.getOutputRowMeta().indexOfValue("LD")] = LD; outputRow[_step_.getOutputRowMeta().indexOfValue("AGE")] = data.age; outputRow[_step_.getOutputRowMeta().indexOfValue("NAME")] = data.name; _step_.putRow(_step_.getOutputRowMeta(), outputRow); } var trans_Status = SKIP_TRANSFORMATION;
需要注意的是我們需要輸出的欄位需要在控制元件下方的欄位中新增欄位定義。
執行效果如下:
文字檔案輸出
這個就是一個結果輸出,實際業務中根據實際需要換成其他輸出目標物件。
如果這篇文章對你有幫助的話,評論或推薦下吧!(轉載請註明原作者!)