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"); |