kettle-如何在作業job中使用JavaScript腳本


描述(Description)

使用JavaScript作業條目來計算布爾表達式。結果可用於確定下一步將要執行的步驟。Javascript作業條目會評估並返回true或false。

評估(Evaluation)

JavaScript作業條目的結果為true或false。換句話說,它需要以布爾表達式結尾。

下面是一些可能的評估,以結束您的腳本:

lines_input > 100  或    true  或者  parent_job.getVariable("INPUT_DIRECTORY").equals("/tmp");

以下變量可用於表達式:

 

 

 

變量(Variables)

這是評估變量字符串內容的方法:

parent_job.getVariable("NR_OF_ROWS") == 1000000 

由於我們可以訪問parent_job對象,因此我們也可以通過以下方式在父作業中設置變量:

parent_job.setVariable("NR_OF_ROWS", "1000000");

例如,您可以執行以下操作來操作此作業條目中的變量:

useDate = parent_job.getVariable("use_date").equals("1");
if (useDate == 0) { //We get to use native java classes as this is using Rhino mocks???
    date = new java.util.Date();
    date.setDate(date.getDate()-1); //Go back 1 full day
    dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
    newDateStr = dateFormat.format(date);
    parent_job.setVariable("start_date", newDateStr);
}
true;

上一步驟的結果(Previous result)

作業條目完成后,執行結果將是一個Result對象,向JavaScript引擎公開為“ previous_result”:

表達式 替代 數據類型 含義
previous_result.getResult()   boolean 如果先前的作業條目已成功執行,則為true;如果存在某些錯誤,則為false。
previous_result.getExitStatus() exit_status int 前一個Shell腳本作業條目的退出狀態
previous_result.getEntryNr() nr int 每次執行作業條目時,條目號都會增加。
previous_result.getNrErrors() errors long 錯誤數,也可以作為變量“錯誤”使用
previous_result.getNrLinesInput() lines_input long 從文件或數據庫讀取的行數
previous_result.getNrLinesOutput() lines_output long 寫入文件或數據庫的行數
previous_result.getNrLinesRead() lines_read long 從上一步讀取的行數
previous_result.getNrLinesUpdated() lines_updated long 文件或數據庫中更新的行數
previous_result.getNrLinesWritten() lines_writer long 寫入下一步的行數
previous_result.getNrLinesDeleted() lines_deleted long 刪除的行數
previous_result.getNrLinesRejected() lines_rejected long 通過錯誤處理拒絕並傳遞到另一步驟的行數
previous_result.getRows()   List 結果行,另請參見下文。
previous_result.isStopped()   boolean 標記以指示上一個先前的作業條目是否停止。
previous_result.getResultFilesList()   List 上一個作業條目中使用的所有文件的列表
previous_result.getNrFilesRetrieved() files_retrieved int 從FTP,SFTP等檢索到的文件數。
previous_result.getLogText()   String 上一個作業條目及其子執行的日志文本。
previous_result.getLogChannelId()   String 上一個作業條目的日志通道的ID。您可以使用它在日志通道日志表中查找有關執行沿襲的信息。
  is_windows Boolean 如果作業在Windows變體上運行,則為true,否則為false。

 

平台(Platform)

我們還公開了一個名為“ is_windows”的變量,以幫助您做出特定於平台的選擇

行數(rows)

我們向JavaScript公開的“rows”變量可幫助您使用“將行復制到結果”步驟評估傳遞到下一個作業條目的結果行。
這是有關如何使用此數組的示例腳本:

var firstRow = rows[0];
 
firstRow.getString("name", "").equals("Foo")

 

js的使用:

 

 

 

 

var prevRow=previous_result.getRows();
parent_job.setVariable("prevRow",prevRow);
parent_job.setVariable("size",prevRow.size());
parent_job.setVariable("size1",prevRow.get(0).size());
parent_job.setVariable("prevRow.get(0)", String(prevRow.get(0)).replace("],[",",").replace("[","").replace("]","").split(",")[0]);
true;

 

 

實例:kettle循環抽取數據

Kettle的循環遍歷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM