Kettle 中的迴圈

2022-07-28 02:57:11 字數 2302 閱讀 8783

說道迴圈,小夥伴們肯定不陌生,就是重複幹一件事;而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 用乙個抽象的名字...