反馈已提交

网络繁忙

数据检测任务-自定义规则

  • 文档创建者:Naya
  • 历史版本:7
  • 最近更新:Naya 于 2026-03-02
  • 1. 概述

    1.1 应用场景

    在交易履约业务体系中,退款业务是订单流转的重要环节。

    业务场景中,退款数据存储于退款表(refund_table),并通过订单号与订单主表(order_table)的原订单信息建立关联。核心要求为:每笔退款数据需在订单主表中匹配到有效记录,且退款金额严格小于或等于对应原始订单金额。

    1.2 实现思路

    在检测任务中,通过「任务自定义规则>行级筛选」自定义 SQL 语句查询检测对象是否存在异常数据。

    12.png

    同时,通过自定义异常明细 SQL,记录相关的异常数据信息。

    13.png

    2. 操作步骤

    2.1 创建检测任务

    在「数据管理>数据检测」下新建「检测任务」,如下图所示:

    1.png

    2.2 选择检测范围

    选择需要检测的数据表,这里选择对 refund_table 进行检测。如下图所示:

    2.png

    2.3 设置规则

    1)需要对退款表的每行数据进行检测,选择「任务自定义规则>行级筛选」。如下图所示:

    3.png

    2)自定义 SQL 语句,本文示例需要从退款表中筛选出两类异常的退款记录:

    • 退款表中的 order_id 无法在订单表中找到对应的记录;

    • 退款金额超过订单实付金额的记录。

    示例 SQL
    SELECT 
       r.refund_id,
       r.order_id,
       r.refund_amount,
       o.payment_amount
    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

    4.png

    3)设置预期范围:行数=0,也就是不能存在异常退款订单。如果存在异常明细,就需要检测出来。

    5.png

    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

    7.png

    配置完成后,保存并运行此任务。如下图所示:

    8.png

    2.5 效果查看

    该任务检测不通过,有 4 行异常明细数据。如下图所示:

    9.png

    点击「查看异常明细」,可以看到除了记录的字段信息,还新增了三列字段,直观的看出来是哪种异常情况。

    10.png

    此外,还支持导出异常明细数据,发送给相关人员核查。

    11.png



    附件列表


    主题: 数据管理
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持