Kettle位置參數(Argument)、命名參數(Parameter)、變量(Variable)


Kettle支持3種參數:位置參數、命名參數、變量。

  位置參數(argument) 命名參數(parameter) 變量(variable)
說明 根據參數的位置來設置和讀取參數值,用於在KJB外部傳入,並在KJB內部使用 根據參數的名字來設置和讀取參數值,用於在KJB外部傳入,並在KJB內部使用 由用戶自定義,在KJB內部隨時隨地的定義、賦值和使用
關鍵點

1、參數值只能由外部傳入(arg1 arg2 arg3)

2、通過位置來取值;

3、只能在轉換中(transform)獲取到參數值;

4、最多支持10個參數

5、功能:太弱(不建議使用)

1、參數值只能由外部傳入(-param:Key=Value),Key必須固定,值可以在KJB內部重新賦值;
2、可以在作業屬性中指定默認值,如果外部不傳入,就取默認值;
3、可在作業、轉換中任意使用;
4、不能動態新增;
5、通過${Key}使用;
6、強大程度:一般
1、變量必須在KJB內部定義,在內部賦值,在內部使用(Key=Value);
2、雖然變量只能在內部定義、賦值和使用,但是因為Key和Value都可以是變量,所以可以從外部(文件、數據庫等)讀取變量名、變量值,實現動態的變量聲明、賦值,功能非常強大;
3、可在作業、轉換任意使用;
4、可以動態聲明、賦值、使用;
5、通過${Key}使用;
6、最靈活強大,推薦使用
如何定義?

一邊定義,一邊賦值。

見下面的“如何賦值”
雙擊作業(或轉換)的空白處,在彈出的“parameters”標簽頁,可以設置參數的名字

1、在作業中,通過General->Set Variables控件定義;

2、在轉換中,通過Job->Set Variables控件定義;

3、在作業中,通過“JS腳本”控件設置,如parent_job.setVariable("VAR1", "abc123");

如何賦值? 1、在設計界面(spoon.bat)點擊執行按鈕時,可以在彈出的“Run Options”設置,每次運行都要重新設置;
2、在命令行界面(kitchen.bat)執行.kjb文件時,直接指定。如:sh kitchen.sh -file=/kettle/test.kjb 20150101 abc 123,這里按順序指定了3個參數,以空格隔開;
3、父作業里面執行一個子作業時,可以在“Job”控件的Arguments標簽里指定,可以使用變量
1、在設計界面(spoon.bat)點擊執行按鈕時,可以在彈出的“Run Options”設置,每次運行都要重新設置;
2、在命令行kitchen.bat執行.kjb文件時,直接指定。如:sh kitchen.sh -file=/kettle/test.kjb -param:P1=20150101 -param:P2=abc -param:P3=123,這里指定了三個命名參數P1、P2、P3的參數值,順序不限
3、父作業里面執行一個子作業時,可以在“Job”控件的Parameters標簽里指定,可以使用變量,可以使用數據流批量賦值並循環
1、在作業中,通過General->Set Variables控件賦值;
2、在轉換中,通過Job->Set Variables控件賦值,前面必須帶有一個Input控件(強大的關鍵點在這里,Input控件有多少,我們就可以有多少種方法去動態設置變量),且Input控件生成的記錄數必須是1條(也可以是0,此時變量未能賦值);
3、在作業中,通過“JS腳本”控件設置,如parent_job.setVariable("VAR1", "abc123");
4、父作業里面執行一個子作業時,子作業可以自由使用父作業定義的變量,包括重新賦值,不用刻意傳遞
如何讀取? 新建一個轉換,選擇“Input”下的“get System Info”控件,type選擇“command line argument1、2、3...”,即可讀取對應位置的參數值。 1、在所有控件中,末尾帶有菱形$號的輸入框都可以使用,通過${KEY_NAME}使用。可以嵌套使用,比如${P1}的內容是ABC${P2}123,那么${P2}的值也會被替代成真實值
2、通過作業里面的JavaScript腳本控件讀取,如:parent_job.getVariable("VAR1");
1、在所有控件中,末尾帶有菱形$號的輸入框都可以使用,通過${KEY_NAME}使用。可以嵌套使用,比如${P1}的內容是ABC${P2}123,那么${P2}的值也會被替代成真實值;
2、通過作業里面的JavaScript腳本控件讀取,如:parent_job.getVariable("VAR1");


免責聲明!

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



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