反馈已提交

网络繁忙

检测任务结果摘要与异常明细推送

  • 文档创建者:Wendy123456
  • 历史版本:3
  • 最近更新:Wendy123456 于 2026-03-24
  • 1. 概述

    1.1 应用场景

    数据检测任务检测不通过时,用户希望收到自定义的检测结果摘要以及异常明细的推送,从而通过通知可以了解规则不通过的原因。

    1.2 预期效果

    1)检测失败

    数据检测任务中断、检测失败时,进行消息通知。

    2)检测不通过

    企微群消息中,通知对应负责人规则运行结果:

    1774256982612442.png

    邮箱中收到异常明细:

    1774321479506592.png

    1.3 实现思路

    6.png

    1)使用「调用检测任务节点,对「数据同步节点中目标表进行质量检测。

    2)「条件分支节点中,使用内置参数${调用检测任务节点名称.det_result},判断检测结果。

    • 若检测结果为通过,进行后续数据加工。

    • 若检测结果为中断或检测失败,进行消息通知。

    • 若检测结果为不通过,使用 检测结果输入 算子,获取数据检测任务的相关信息,将检测结果数据进行处理,输出为参数,进行消息通知。

    2. 操作步骤

    2.1 准备工作

    6.png

    icon提示:
    调用检测任务的示例可参考(不带背景色的节点配置详情):调用检测任务

    本文重点介绍如何实现自定义检测任务结果摘要,并以附件形式推送异常明细推送,即上图中带背景色的节点如何配置。

    2.2 SQL 脚本配置

    后续步骤中我们要使用内置参数${调用检测任务.det_execute_id}来获取数据,但部分版本参数获取的结果会有延迟,可使用「SQL脚本」节点,SQL 语句为select  sleep(10),表示检测任务运行 10 秒后,再调取内置参数${调用检测任务.det_execute_id}来获取检测任务运行的结果。

    7.png

    2.3 消息通知内容输出为参数

    8.png

    2.3.1 检测运行结果摘要输出为参数

    1)2.2 节的「SQL脚本」节点后拖入「数据转换」节点,进入「数据转换」节点。

    2)拖入「检测结果输入」算子,使用内置参数${调用检测任务.det_execute_id}来获取最近一次的数据检测结果。

    9.png

    点击「数据预览,可看到具体字段,字段说明请参见 检测结果输入 文档,字段值为空是正常的,因为数据检测任务要运行的时候才会产生当前的运行记录。

    10.png

    3)检测结果输入」算子后,拖入「Spark SQL」算子和「新增计算列」算子,默认进行数据分发,分发内容默认为所有字段。

    1774317638559312.png

    4)「Spark SQL」算子中,基于检测结果的数据集来编辑需要推送的检测任务运行结果摘要形式。

    SELECT 
        CONCAT(
            '【', COALESCE(work_name, '未知任务'), '运行结果】', chr(10), chr(10),
            '检测通过:', CAST(pass_count AS STRING), '    |    检测不通过:', CAST(not_pass_count AS STRING), '    |    检测失败:', CAST(fail_count AS STRING), chr(10), chr(10),
            
            -- 根据是否有不通过的规则,动态决定是否拼接这行字及明细
            CASE 
                WHEN not_pass_count > 0 THEN 
                    CONCAT(
                        '检测不通过的规则如下:', chr(10), chr(10),
                        array_join(failed_details_list, CONCAT(chr(10), chr(10))),
                        chr(10), chr(10)
                    )
                ELSE '' 
            END,
            
            '详情请登录FineDataLink查看对应检测任务的运行记录!'
        ) AS alert_message
    FROM (
        SELECT 
            work_name,
            -- 1. 统计各类状态的数量
            SUM(CASE WHEN rule_state = 'PASS' THEN 1 ELSE 0 END) AS pass_count,
            SUM(CASE WHEN rule_state IN ('NOT_PASS', 'WEAK_NOT_PASS') THEN 1 ELSE 0 END) AS not_pass_count,
            SUM(CASE WHEN rule_state IN ('INTERRUPT', 'FAILED') THEN 1 ELSE 0 END) AS fail_count,
            
            -- 2. 把不通过的明细单独展示
            collect_list(
                CASE 
                    WHEN rule_state IN ('NOT_PASS', 'WEAK_NOT_PASS') THEN
                        CONCAT(
                            COALESCE(table_name, '【未知表】'), '中', 
                            COALESCE(target_name, '【未知对象】'), '的', 
                            COALESCE(rule_name, '【未知规则】'), ' 检测于', 
                            COALESCE(CAST(finish_time AS STRING), '【未知时间】'), '检测不通过'
                        )
                    ELSE NULL 
                END
            ) AS failed_details_list
        FROM 
            $[检测结果输入]
        GROUP BY 
            work_name
    ) t

    12.png

    处理后的数据格式示例:

    1774317827839253.png

    5)拖入「参数输出」算子,输出为参数,由于参数调试值不能为空,可任意输入一个值,该值并不影响定时任务的实际运行结果。

    1774317945690411.png

    2.3.2 将异常明细文件地址输出为参数

    由于需要将 异常明细文件 以邮件形式发送给用户,该文件地址为 err_detail_path 字段值。「消息通知-邮件中,文件来源为服务器本地目录时,文件地址需要是相对路径(值不能包含assets/local_files)。

    1774318358835621.png

    1)拖入「新增计算列」算子,新增字段after_file_path,处理err_detail_path字段值,去除字段值中的assets/local_files/

    REPLACE(err_detail_path,'assets/local_files/','')

    15.png

    2)拖入「数据过滤」算子,过滤出检测结果为不通过的数据。

    1774318795907092.png

    3)拖入「参数输出」算子,将after_file_path、work_name、table_name、rule_name输出为参数,参数默认值可任意输入一个值,调试值不影响定时任务实际运行结果。

    1774319010610621.png

    2.4 消息通知

    8.png

    2.4.1 检测运行结果摘要推送

    1)「数据转换节点后拖入「消息通知节点、循环容器节点。

    2)「消息通知节点中,通知渠道选择企业微信群消息推送,消息内容设置为${not_pass},即 2.3.1 节输出的参数。

    18.png

    2.4.2 异常明细文件推送

    1)如果数据检测任务中,检测对象有多个,err_detail_path 字段将有多个值,所以循环容器节点循环方式为遍历循环。

    1774320442545230.png

    2)「循环容器节点内拖入「消息通知节点,通知渠道选择邮件:

    设置项
    主题【异常明细附件】${rule_name}检测不通过
    内容

    【检测任务】${work_name}

    【检测表】${table_name}

    【检测规则】${rule_name}

    附件1774320684261217.png

    1774320767522841.png

    2.5 效果查看

    请参见本文 1.2 节。



    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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