最新历史版本 :定時任務併發數與髒資料說明 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

目錄:

1. 概述编辑

定時任務運行時若遇到髒數據,任務會報錯并終止。本文說明如何查看髒數據産生的原因及如何處理髒數據。

注:實時管道任務的髒數據說明請參見:實時管道任務處理髒數據

2. 髒數據産生常見原因编辑

原因
說明
主鍵沖突當寫入方式-主鍵沖突策略爲「主鍵相同,記錄爲髒數據」時,主鍵沖突的數據将被視爲髒數據
字段長度超出限制

需注意,字段長度還與編碼有關

PostgreSQL 數據庫的 varchar(60) 和 SQLServer 的 varchar(60) 長度定義是不一樣的,SQLServer表示最多存儲 60 字節,PostgreSQL 是标識,最多存儲 60 個字符

根據編碼的不同,字符占的字節也不一緻,60 個字符計算後肯定超過 60 個字節

字段類型不匹配-
目标字段缺失
字段映射中的目标表字段被删除,所以來源表的該字段無法同步,變爲髒數據
違反目标字段非空約束來源表某個字段值爲空,插入到不能爲空的目标表字段中
目标表的表空間不足-
暫時性原因網絡不穩定,重新運行定時任務即可


3. 查看髒數據條數及原因编辑

1)定時任務運行時,若存在髒數據,日志中将會報錯。如下圖所示:

注:建議将 日志等級 設置爲 INFO,日志信息會更加詳細。

QQ20250718-102125.png

「統計」Tab頁下,可看到髒資料具體條數,點選條數,可看到錯誤類型和錯誤原因。如下圖所示:

QQ20250718-102601.png


QQ20250718-102633.png

2)用戶若想查看到所有髒數據的所有信息,可到%FDL_HOME%\logs\fanruan.log文件中進行查看。

3)用戶若想遇到髒數據就通知給指定用戶,可在結果通知中勾選「髒數據通知」按鈕。如下圖所示:

詳情請參見:任務控制-結果通知

4. 處理髒數據编辑

4.1 忽略髒數據

若用戶希望任務具有一定容錯性,即遇到髒數據任務繼續運行,不進行報錯,運行狀态爲成功且髒數據不寫入到目标表中(正常的數據會順利寫入到目标表中,可設置髒數據阈值(輸入範圍爲1~1萬)。如下圖所示:

詳情請參見:任務控制-容錯機制

注:若不配置「髒數據容忍」,只要遇到髒數據就會導緻任務失敗。


若髒數據條數未超過阈值(最大可設置爲10000),日志信息如下:


髒數據條數超出髒數據阈值後,任務會報錯。

4.2 髒數據處理後寫入到目标表

用戶若希望髒數據寫入到目标表,需要根據日志排查髒數據出現原因,修正後重新運行任務或者 重試任務

産生髒數據後,重試任務的處理場景:

場景
增量同步的方式
重試後是否會存在數據問題
建議處理措施
全量同步
--
增量同步-使用時間戳


動态參數:如:配置 now-1 作爲數據範圍,每次更新前一天數據


在重試時,用戶可以指定本次運行的臨時任務參數值

且用戶的任務設計需要支持幂等,即同一數據範圍的定時任務需要支持多次運行

獲取目标表的最新數據時間戳

如:每次任務先從目标表獲取最大的時間戳,作爲本次同步的起始時間

用戶需要手動删除目标表大於本批次的數據,以進行重試

且用戶的任務設計需要支持幂等,即同一數據範圍的定時任務需要支持多次運行

自定義配置表存儲斷點

如:每次任務最後一步存儲本次同步的最大時間至一張表存儲

用戶需要手工修改斷點值,以進行重試

且用戶的任務設計需要支持幂等、即同一數據範圍的定時任務需要支持多次運行

全表比對--