說道循環,小伙伴們肯定不陌生,就是重復干一件事;而kettle中的循環一般是發生在job中,因為job是串行執行的;
kettle的循環有兩種,一種是通過js腳本,另外一種是通過遍歷前面步驟返回的每一行。
下面是我寫的偽代碼,我將使用Kettle來實現這段代碼:
array = ['sys1','sys2','sys3','sys4'] for variable in array: |
代碼里循環變量是variable,用for遍歷完整個數組,則表示循環結束。
循環體中有一組判斷條件,判斷數組中的元素歸於哪一個分支。
如果所有判斷條件都不符合,則打印“沒有被調用”
1. Kettle作業介紹
schedule_job.kjb : 用來關聯循環變量和循環體的作業,也是調用的入口,可以理解main
get_data_from_datagrid.ktr : 生成數組,也就是循環條件。
cycle_body_job.kjb : 循環體,數組里有幾條數據,循環體就執行幾次。
2. 下圖是 schedule_job 的結構,它的作用是連接循環條件和循環體,所以這個作業中包含其他兩個步驟
接下來我會展開每個步驟里的設置方法,最后再介紹schedule_job 是如何設置的;
如果展開的是文件,則直接寫文件名,如果展開的是步驟,則帶上文件名-步驟名稱。
例如 展開文件 get_data_from_datagrid.ktr
展開步驟 get_data_from_datagrid-Data Grid
3. get_data_from_datagrid.ktr 展開
只有兩個步驟,一個是data grid,用來生成數組,另外一個步驟是Copy rows to result ,用來把返回的數據復制到結果中,可以返回給調用者。調用者就是外面的schedule_job.ktr。
4. get_data_from_datagrid-Data Grid 展開
在Meta選項卡中填寫字段信息, 字段名是SYSTEMNAME 類型是字符串
在Data選項卡里填寫字段的值,這個過程就好像往excel里填數據一樣。
5. cycle_body_job.kjb 展開
雙擊空白的地方,打開“Parameters”選項卡, 在里面輸入變量名SYSTEMNAME。這個變量跟前面的步驟中字段名相同。
6. cycle_body_job-is_sys1 展開
其他判斷條件類似,不一一展開。
7. schedule_job 設置方法
勾選“Execute every input row”