說道迴圈,小夥伴們肯定不陌生,就是重複幹一件事;而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 的結構,它的作用是連線迴圈條件和迴圈體,所以這個作業中包含其他兩個步驟
接下來我會展開每個步驟裡的設定方法,最後再介紹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」
python迴圈排程kettle作業
需求 當前job只能一次跑一天程式,想著用python寫個迴圈,然後一次性跑乙個月的資料。原理是python呼叫cmd cmd kitchen.bat rep kettle repo user admin pass admin dir job job material inventory param...
在kettle使用迴圈來處理表中的資料
有時候,如果kettle事務中源表的資料非常大的時候,一下子把源表中的資料全部讀入記憶體的方式是不可取的。在mysql中,我們可以通過迴圈的方式,使用limit來定量取得一部分資料來處理。即,關鍵的sql是 select from table name limit current value,ste...
kettle中json input中資料的解析
類似於xpath在xml文件中的定位,jsonpath表示式通常是用來路徑檢索或設定json的。其表示式可以接受 dot notation 和 bracket notation 格式,例如 store.book 0 title store book 0 title jsonpaht 用乙個抽象的名字...