基本配置
Configure Connection Tab
- Connection timeout:嘗試連線資料庫所等待的最大時間(毫秒),空為無限,建議5000
- Socket timeout:sql在執行成功之前等待讀寫操作的時間(毫秒),空為無限,建議5000
Output Options Tab
- Truncate option:在資料傳輸前清空表
- Update 與 Upsert:
Update | Upsert | 是否更新 | 是否插入 |
---|---|---|---|
未選 | 未選 | 不更新 | 只插入 |
選中 | 未選 | 只更新 | 不插入 |
選中 | 選中 | 更新 | 插入 |
- Multi-update:更新所有匹配的文件,預設是隻更新符合查詢條件的第一個
- Modifier update:允許修飾符運算子用於修改匹配文件中的各個欄位($運算子),此類更新速度快,涉及的網路流量最小。只有當這個選項選中時,Mongo Document Fields Tab 的 Modifier operation 和 Modifier policy 才會生效
Mongo Document Fields Tab
- Name:欄位名
- Mongo document path:欄位路徑,可以為 Name 設定新欄位名
- Use field name:為 N 時欄位會使用 Mongo document path 為新欄位名
- JSON:以 json 格式儲存資料
- Match field for upsert column:為 Y 的欄位將作為查詢條件
- Modifier operation:當 Output Options Tab 的 Modifier update 選中時,此設定生效,其中,N/A 為不更新,$set 為覆蓋更新 $inc 為數字的加法更新,$push 為陣列的追加更新
- Modifier policy:當 Output Options Tab 的 Modifier update 選中時,此設定生效,其中,Insert 為插入,Update 為更新,可為不同欄位設定不同的更新方法
示例
需求1,更新標誌位
讀取資料後將欄位hours更改,之後需要將改動更新到原資料,但是資料的唯一標識就是hours,所以在hours更改之前複製給old_hours,在最後根據old_hours把新hours更新。
- 只勾選 Update 確保作業只更新不插入
- 勾選 Modifier update 從而只更新特定的欄位,否則會更新所有欄位,沒有值的為 null
- 欄位 old_hours 必須指定 Mongo document path 為 hours,同時將 Use field name 設為 N,否則 kettle 找不到此欄位
- 欄位 old_hours 的 Match field for upsert column 設為 Y,以欄位作為更新的查詢條件
- 將 old_hours 的 Modifier operation 設為 N/A,hours 的 Modifier operation 設為 $set,即可達到以 old_hours 查詢然後更新為 hours 的效果
- old_hours 的 Modifier operation 設為 N/A 之後,Modifier policy 怎麼設定都無所謂,沒有效果