場景:輸入在指定的錯誤(錯誤應涵蓋資料型別不匹配的情況)行數內,trans不報錯,但透過錯誤處理步驟捕捉,並記入檔案,整個資料管線正常完成直至處理完最後一個輸入行。
解決方案:使用步驟【資料檢驗】進行處理。這個步驟和常規的業務系統對接三方介面一個邏輯,將符合規則的資料放行,不符合的記錄。
資料準備(data-valid.json檔案中的內容如下),基於如下資料分別進行欄位型別、非空、列舉值、欄位值長度、郵箱正則校驗。
[{ "id": 1, "name": "Java小金剛1", "sex": "男", "en_name": "xiaojingang1", "phone": "13931111111", "email": "1@qq.com" }, { "id": 2, "name": "Java小金剛2", "sex": "男", "en_name": "", "phone": "13931111111", "email": "2@qq.com" }, { "id": 3, "name": "Java小金剛3", "sex": "未知", "en_name": "xiaojingang3", "phone": "13931111111", "email": "3@qq.com" }, { "id": 4, "name": "Java小金剛4", "sex": "男", "en_name": "xiaojingang4", "phone": "1393", "email": "4@qq.com" }, { "id": 5, "name": "Java小金剛5", "sex": "男", "en_name": "xiaojingang5", "phone": "13931111111", "email": "5qq.com" }]
1、資料校驗總體設計如下:
1)jsonn input 載入data-valid.json檔案資料,實際使用時不一定是jsonn input 步驟,根據自己業務情況選擇則。
2)資料校驗步驟,設定一系列校驗規則進行清洗資料。
3)校驗透過的資料繼續後續處理,校驗失敗的資料記錄日誌或者存入表中,這裡方便演示所以只打了日誌。
2、步驟錯誤處理設定,點選X號,然後在彈出的窗體裡面設定錯誤數列名,錯誤描述列名,錯誤列的列名,錯誤編碼列名的欄位名稱,如下圖所示:
3、型別校驗,也就說如果上游傳遞過來的型別是integer型別,但是你需要的是String型別,這個時候可以進行型別校驗規則攔截,如下圖所示。
4、非空校驗,校驗en_name欄位不允許為空,空值的資料直接流向錯誤記錄步驟,如下圖所示:
5、列舉值校驗,sex欄位的取值範圍只允許男和女兩種,不符合條件的資料直接流向錯誤記錄步驟,如下圖所示:
6、欄位值長度校驗,校驗phone電話號碼長度需要是11位,不符合條件的資料直接流向錯誤記錄步驟,如下圖所示:
7、萬能正則校驗,使用正規表示式可以實現各種各樣的定製化需求,這裡使用正則校驗郵箱是否正確,不符合條件的資料直接流向錯誤記錄步驟,如下圖所示:
8、還有一些其他的規則,朋友們可以自己進行探索下,若有問題歡迎評論區或者交流群內討論。