1. 概述
1.1 應用場景
在交易履約業務體系中,退款業務是訂單流轉的重要環節。
業務場景中,退款資料儲存於退款表(refund_table),並透過訂單號與訂單主表(order_table)的原訂單資訊建立聯動。核心要求為:每筆退款資料需在訂單主表中匹配到有效記錄,且退款金額嚴格小於或等於對應原始訂單金額。
1.2 實現思路
在檢查任務中,透過「任務自訂規則>行級篩選」自訂 SQL 語句查詢檢查物件是否存在異常資料。

同時,透過自訂異常明細 SQL,記錄相關的異常資料資訊。
2. 操作步驟
2.1 建立檢查任務
在「資料管理>資料檢查」下建立「檢查任務」,如下圖所示:

2.2 選擇檢查範圍
選擇需要檢查的資料表,這裏選擇對 refund_table 進行檢查。如下圖所示:

2.3 設定規則
1)需要對退款表的每行資料進行檢查,選擇「任務自訂規則>行級篩選」。如下圖所示:

2)自訂 SQL 語句,本文範例需要從退款表中篩選出兩類異常的退款記錄:
退款表中的 order_id 無法在訂單表中找到對應的記錄;
退款金額超過訂單實付金額的記錄。
示例SQL
SELECT
r.refund_id,
r.order_id,
r.refund_amount
FROM refund_table r
WHERE NOT EXISTS (
SELECT
FROM order_table o
WHERE o.order_id = r.order_id
AND r.refund_amount <= o.payment_amount
)

3)設定預期範圍:行數=0,也就是不能存在異常退款訂單。如果存在異常明細,就需要檢查出來。

2.4 記錄異常明細
上述規則僅檢查退款表中是否有異常資料,實際業務中,還需要把異常明細記錄下來,以便後續修正。
支援自訂異常詳情SQL,本文範例中,需要記錄以下資訊:
相關的欄位資訊:例如 order_id、refund_id、refund_amount 等;
異常訂單金額:若原訂單部存在,異常金額=全部退款金額;若退款超限,異常金額=退款金額—實付金額;
異常類型:判斷異常明細是「退款金額超限」或「訂單不存在」,用直覺的中文標簽標註異常類別;
異常描述:連接成可直接閱讀的異常說明,無需手動計算。例如:退款單 RF202405230012 退款金額(150.00)超過原訂單實付金額(128.50)
示例SQL
SELECT
r.refund_id,
r.order_id,
r.refund_amount,
o.payment_amount,
CASE
WHEN o.order_id IS NULL
THEN r.refund_amount
WHEN r.refund_amount > o.payment_amount
THEN (r.refund_amount - o.payment_amount)
ELSE 0.00
END AS 異常金額,
r.refund_reason,
r.apply_time,
o.create_time,
CASE
WHEN o.order_id IS NULL THEN '❌ 訂單不存在'
WHEN r.refund_amount > o.payment_amount THEN '❌ 退款金額超限'
END AS 異常類型,
CONCAT(
'退款單 ', r.refund_id,
CASE
WHEN o.order_id IS NULL THEN CONCAT(' 關聯的訂單 ', r.order_id, ' 在系統中不存在')
ELSE CONCAT(' 退款金額(', r.refund_amount, ')超過原訂單實付金額(', o.payment_amount, ')')
END
) AS 異常描述
FROM refund_table r
LEFT JOIN order_table o ON r.order_id = o.order_id
WHERE o.order_id IS NULL OR r.refund_amount > o.payment_amount
ORDER BY r.apply_time DESC

配置完成後,儲存並運作此任務。如下圖所示:

2.5 效果查看
該任務檢查不透過,有 4 行異常明細資料。如下圖所示:

點選「查看異常明細」,可以看到除了記錄的欄位資訊,還新增了欄位,直覺的看出來是哪種異常情況。

此外,還支援匯出異常明細資料,傳送給相關人員覈查。

