Kettle 中的循環


說道循環,小伙伴們肯定不陌生,就是重復干一件事;而kettle中的循環一般是發生在job中,因為job是串行執行的;

kettle的循環有兩種,一種是通過js腳本,另外一種是通過遍歷前面步驟返回的每一行。

 

下面是我寫的偽代碼,我將使用Kettle來實現這段代碼:

array = ['sys1','sys2','sys3','sys4']

for variable in array:
     if variable == 'sys1' :
         print('%s被調用'%(variable,))
        
     elif variable == 'sys2' :
         print('%s被調用'%(variable,))
    
     elif variable == 'sys3' :
         print('%s被調用'%(variable,))
    
     elif variable == 'sys4' :
         print('%s被調用'%(variable,))
    
     else :
         print('沒有被調用')

 

代碼里循環變量是variable,用for遍歷完整個數組,則表示循環結束。

循環體中有一組判斷條件,判斷數組中的元素歸於哪一個分支。

如果所有判斷條件都不符合,則打印“沒有被調用”

 

1. Kettle作業介紹

schedule_job.kjb : 用來關聯循環變量和循環體的作業,也是調用的入口,可以理解main

get_data_from_datagrid.ktr : 生成數組,也就是循環條件。

cycle_body_job.kjb : 循環體,數組里有幾條數據,循環體就執行幾次。

 

2. 下圖是 schedule_job 的結構,它的作用是連接循環條件和循環體,所以這個作業中包含其他兩個步驟

image

 

接下來我會展開每個步驟里的設置方法,最后再介紹schedule_job 是如何設置的;

如果展開的是文件,則直接寫文件名,如果展開的是步驟,則帶上文件名-步驟名稱。

例如 展開文件 get_data_from_datagrid.ktr

       展開步驟 get_data_from_datagrid-Data Grid

 

3. get_data_from_datagrid.ktr 展開

image

 

只有兩個步驟,一個是data grid,用來生成數組,另外一個步驟是Copy rows to result ,用來把返回的數據復制到結果中,可以返回給調用者。調用者就是外面的schedule_job.ktr。

 

4. get_data_from_datagrid-Data Grid 展開

image

在Meta選項卡中填寫字段信息, 字段名是SYSTEMNAME 類型是字符串

image

在Data選項卡里填寫字段的值,這個過程就好像往excel里填數據一樣。

 

5. cycle_body_job.kjb 展開

image

 

雙擊空白的地方,打開“Parameters”選項卡, 在里面輸入變量名SYSTEMNAME。這個變量跟前面的步驟中字段名相同。

image

 

6. cycle_body_job-is_sys1 展開

其他判斷條件類似,不一一展開。

image

 

7. schedule_job 設置方法

image

 

勾選“Execute every input row”

image

 

image


免責聲明!

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



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