基本配置
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更新。

配置1
- 只勾選 Update 確保作業只更新不插入
- 勾選 Modifier update 從而只更新特定的字段,否則會更新所有字段,沒有值的為 null

配置2
- 字段 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 怎么設置都無所謂,沒有效果
轉載來源:https://www.jianshu.com/p/bd6183a02109