配置规则:按表(单表)

数据质量支持按照数据表配置质量监控规则,用来监控表数据是否符合要求,自动拦截问题任务,阻断脏数据向下游蔓延,保障产出的表数据符合预期。本文为您介绍如何配置表的质量监控规则并执行质量监控及其他相关操作。

前提条件

已采集引擎元数据。质量规则需基于引擎数据表进行配置,并作用于对应的表数据,因此,配置质量监控规则前,您需先采集元数据。详情请参见元数据采集

配置流程

按表配置质量规则主要流程如下:

  1. 选择待配置规则校验的表。

  2. 为表创建质量监控

    以校验的表的具体数据范围为对象(如分区表的具体分区),通过质量规则关联质量监控的方式,定义对象数据需要进行哪些质量规则校验。

    • 可新建多个质量监控校验同一张表的不同分区,每个质量监控关联不同的质量规则,达到同一张表不同分区数据质量校验逻辑不同的目的。

    • 定义质量监控的触发方式,即是否在调度节点运行时触发规则校验,还是需要手动触发才会进行该表质量校验。

    • 定义何种情况下需要发送告警信息,您可根据数据校验结果异常等级自行决定何种异常需要发送告警信息。当表数据变更自动进行数据质量规则校验时,您可根据数据异常程度决定是否需要阻塞任务执行。

  3. 配置数据质量规则添加到质量监控中。

    以质量监控中需要校验的为对象,定义该表数据质量校验规则的校验方式。通过数据质量规则定义对该表数据的具体校验方式,从而确定该表数据是否符合预期。

    数据质量监控规则包括基于模板创建的系统模板规则,以及可自定义SQL逻辑的自定义模板规则。其中:

    • 系统模板规则:可通过DataWorks提供的内置规则模板创建规则。

    • 自定义模板规则:若系统内置规则模板无法满足您对分区表达式中数据质量的监控需求,则可使用自定义规则模板。您也可以将常用的自定义规则固化为规则模板,便于后续快速复用。

  4. 测试及订阅质量监控。

使用限制

  • 当前仅支持为MaxCompute、E-MapReduce(简称EMR)、Hologres、AnalyticDB PostgreSQL、AnalyticDB MySQL数据源配置质量监控规则。并且,规则配置后,产出表数据的调度节点需要使用网络已连通的资源组进行调度,才可正常触发数据质量规则校验。资源组的相关配置,详情请参见新增和使用Serverless资源组

  • 动态阈值类规则需要有21天采样记录,若少于21天,动态阈值类规则会校验异常。若无21天采样记录,您可在配置了动态阈值类规则且规则关联调度任务后,通过补数据功能补齐21天采样记录。

操作步骤

步骤一:进入表质量详情页

  1. 进入数据质量页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据质量,在下拉框中选择对应工作空间后单击进入数据质量

  2. 进入按表配置监控规则。

    在左侧导航栏,单击规则配置 > 按表配置,进入按表配置规则页面。

    1. 左侧数据源列表按需选择待配置规则的表所在的数据库。

    2. 根据数据库类型、数据库、表名等条件筛选,单击目标表名或操作列的监控配置,进入该表的表质量详情页。

      该页面展示了当前表所有已配置的质量规则,您可通过规则是否已关联质量监控来快速过滤目标规则,并对未关联质量监控的规则定义规则运行方式。

      image

步骤二:创建质量监控

  1. 新建质量监控。

    您可以通过如下两种方式新建质量监控:

    规则管理页

    在表的表质量详情页,单击规则管理页签。单击质量监控视角后的image,新建质量监控。

    image

    质量监控页

    在表的表质量详情页,切换到质量监控页签。单击新建质量监控

    image

  2. 配置质量监控的相关参数。

    image

    参数说明:

    配置项

    参数

    说明

    基本配置

    质量监控名称

    自定义监控规则名称。

    监控对象

    数据质量校验的对象,默认为当前表。

    数据范围

    通过分区表达式定义该表需要进行质量规则校验的分区。

    • 非分区表:无需配置,默认为全表

    • 分区表:表达式格式:分区名=分区值,分区值可以是固定值,也可以是附录二:内置分区表达式

    说明

    使用自定义模板、自定义SQL配置规则时,此处配置不生效。即使用自定义模板、自定义SQL配置的质量规则校验的分区由自定义SQL决定。

    运行设置

    触发方式

    监控规则的运行方式。

    • 生产调度触发:通过关联DataWorks运维中心中指定的周期调度任务,任务运行完成后,自动触发该质量监控下的质量规则(空跑任务不会触发质量规则校验)。

    • 手动触发:手动触发当前质量监控关联的质量监控规则。

    关联调度节点

    如果触发方式配置为生产调度触发,可以使用配置此参数,指定关联的调度节点,指定的调度节点运行完成后,自动触发质量监控规则。

    选择运行资源

    执行质量规则检测所需的运行资源,默认选择该工作空间下监控表所属数据源。如选取其他数据源,需确认对应资源可对该表进行访问。

    质量问题处理策略

    问题处置策略

    配置在检测到数据质量问题后,具体的阻塞或告警策略。

    • 阻塞:当检测到数据质量问题后,将识别触发该表质量检测的生产调度节点,并将该节点设置为失败,下游节点将不执行,以此阻塞生产链路,以避免问题数据污染扩散。

      默认为强规则·红色异常

    • 告警:当检测到数据质量问题后,将对该质量监控的告警订阅渠道发送告警信息。

      默认为:强规则·红色异常强规则·橙色异常强规则·校验失败弱规则·红色异常弱规则·橙色异常弱规则·校验失败

    选择质量规则

    选择质量规则

    通过质量监控关联质量规则的方式,确定通过哪些规则来校验该表当前数据范围是否符合预期。

    说明
    • 不同分区可新建多个质量监控并关联不同的质量规则进行校验,以实现不同分区校验规则不同的目的。

    • 如果还未创建质量规则,本步骤可暂不添加,您可以先完成质量监控的创建,在后续创建质量规则时,将规则添加至质量监控中。质量规则的创建,详情请参见步骤三:配置数据质量规则

  3. (可选)您可通过勾选订阅质量告警(邮件)的方式,快速订阅当前质量监控结果。

  4. 单击保存

步骤三:配置数据质量规则

  1. 表质量详情页的规则管理页签,单击新建规则进入规则配置页面。

  2. 创建数据质量规则。

    数据质量提供以下方式配置质量监控规则,您可以按需选择。

    方式一:系统模板规则

    数据质量内置几十种监控规则,您可以根据需要从规则模板中快速创建质量监控规则。

    说明
    • 您可以单击顶部的+ 系统模板规则,然后修改规则模板参数调整到目标规则模板。

    • 您也可以在左侧找到需要的系统模板规则后,单击+ 使用

    • 同时可以添加多个规则。

    image

    系统规则模板参数说明

    参数

    描述

    规则名称

    您可以自定义规则名称。

    规则模板

    定义需要对表进行哪种类型规则校验。

    数据质量为您提供大量内置表级别、字段级别的监控模板可直接选择。详情请参见查看内置规则模板

    说明

    平均值、汇总值、最小值和最大值仅对数值型字段生效。

    规则范围

    该规则应用的范围,表级别规则默认为当前表,字段级别规则选择具体字段。

    比较方式

    定义规则具体怎么校验表数据是否符合预期。

    • 手动设置:自定义数据产出结果与规则的比较方式。

      不同规则模板,可选择的比较方式不同,具体请以实际界面为准。

      • 支持数值型结果对比,通常与固定值(即期望值)进行比较,比较方式包括大于大于等于等于不等于小于小于等于。支持您自定义正常数据范围(正常阈值)与异常数据范围(红色阈值)。

      • 支持波动型结果对比,通常是进行范围比较,比较方式包括绝对值上升下降。支持您自定义正常数据范围(正常阈值),您还可以根据异常偏离程度定义数据产出存在异常(橙色阈值)与数据产出不符合预期(红色阈值)。

    • 智能动态阈值:您无需手动配置波动阈值或期望值,系统会根据智能算法,自动判断合理阈值;若发现数据异常,会即时触发告警或阻塞。动态阈值也可支持强、弱规则。

      说明

      自定义SQL自定义范围、动态阈值类型的质量规则支持智能动态阈值比较方式。

    监控阈值

    • 比较方式手动设置时,您可以自行设置正常阈值红色阈值

      • 正常阈值:当数据质量规则校验结果满足此处设置的值时,说明数据校验符合预期。

      • 红色阈值:当数据质量规则校验结果满足此处设置的值时,说明数据校验不符合预期。

    • 当规则为波动型校验时,您需要指定橙色阈值

      • 橙色阈值:当数据质量规则校验结果满足此处设置的值时,说明数据存在异常但不影响业务运行。

    保留问题数据

    当规则为启用状态时,在本条数据质量监控规则校验不通过的情况下,系统自动创建问题数据表存储质量规则校验过程中发现的问题数据。详情请参见:管理问题数据

    重要
    • 目前仅支持MaxCompute表配置保留问题数据功能。

    • 目前仅部分数据质量监控规则支持配置保留问题数据功能。支持保存问题数据的规则,详情请参见:附录:支持保留问题数据的规则列表与问题数据口径

    • 受启停状态影响,若规则为停用状态,则不执行保留问题数据。

    启用状态

    规则的启用停用状态,用于控制该规则是否在生产环境中运行。

    重要

    状态设置为停用时,规则将无法触发测试运行,并且不会被关联的调度任务触发运行。

    重要程度

    设置规则在业务中的强弱程度。

    • 强规则:比较重要的规则,如果出现红色异常,默认会阻塞质量监控关联的调度任务的执行。

    • 弱规则:普通规则,如果出现红色异常,默认不会阻塞质量监控关联的调度任务的执行。

    描述

    您可以对该规则进行补充说明。

    方式二:自定义模板规则

    说明

    在使用自定义模板创建规则之前,您需要先前往质量资产 > 规则模板库中创建自定义规则模板后才可使用。具体操作,请参见创建并管理自定义规则模板

    引用自定义模板时,将自动显示该模板的基本配置(例如Flag参数,校验SQL)等,您可以自定义规则名称,并按照规则类型,配置监控阈值(例如数值型规则需要定义正常阈值、红色阈值,此外,波动型规则还需要定义橙色阈值。)

    image

    自定义规则模板参数说明

    此处仅展示自定义规则模板独有参数,其他参数解释,请参见系统规则模板参数说明。

    配置项

    说明

    FLAG参数

    用于定义需要在数据质量校验SQL执行前提前执行的SET命令。

    SQL

    定义完整的SQL校验逻辑,要求返回结果为一行一列,且结果为数值型。

    自定义SQL中,请使用中括号的形式匹配表的分区表达式。示例如下:

    select count(*) from ${tableName} where ds=$[yyyymmdd];
    说明
    • ${tableName}变量取值将根据实际监控的表动态替换。

    • 配置分区表达式,详情请参见附录二:内置分区表达式

    • 如果您为表创建了质量监控,则通过此方式配置规则后,质量监控中设置的数据范围将不会生效。规则将以此处SQL语句中的WHERE为准,确认需要校验的表分区。

    方式三:自定义SQL

    该方式支持您自定义该表的数据质量校验逻辑。

    image

    自定义SQL参数说明

    此处仅展示自定义SQL独有参数,其他参数解释,请参见系统规则模板参数说明。

    配置项

    说明

    FLAG参数

    用于定义需要在数据质量校验SQL执行前提前执行的SET命令。

    SQL

    定义完整的SQL校验逻辑,要求返回结果为一行一列,且结果为数值型。

    自定义SQL中,请使用中括号的形式匹配表的分区表达式。示例如下:

    select count(*) from <table_name> where ds=$[yyyymmdd];
    说明
    • 您需要在实际配置中将<table_name>替换为当前实际操作的表名,实际监控的表由此处SQL决定。

    • 配置分区表达式,详情请参见附录二:内置分区表达式

    • 如果您为表创建了质量监控,则通过此方式配置规则后,质量监控中设置的数据范围将不会生效。规则将以此处SQL语句中的WHERE为准,确认需要校验的表分区。

  3. (可选)您可以将配置的规则添加到质量监控中,质量监控的更多信息,请参见步骤二:创建质量监控

    说明

    此处配置的质量规则,只有添加到质量监控中,才会被触发,您可以在此处选择已经创建的质量监控,或在配置质量监控时,在选择质量规则步骤选择此处配置的质量规则。

    image

  4. 单击确定

步骤四:测试规则执行

您可以通过如下方式测试质量监控中规则的触发情况。

规则管理页签测试运行

  1. 规则管理页签的质量监控视角下,找到已创建的质量监控,然后单击测试运行

    image

  2. 测试运行对话框中,确认数据范围调度时间等参数后,单击测试运行。当显示启动成功后,您可以单击查看详情,查看测试运行的具体结果。

    image

质量监控页签测试运行

  1. 质量监控页签,找到已创建的质量监控,然后单击操作列的测试

    image

  2. 测试运行对话框中,确认数据范围调度时间等参数后,单击测试运行。当显示启动成功后,您可以单击查看详情,查看测试运行的具体结果。

    image

步骤四: 订阅质量监控

触发规则后默认仅通知规则创建者,若您想通知其他用户,您还需要为其他用户订阅质量监控,使报警可以通过指定方式通知给指定用户。

您可以通过如下方式订阅质量监控。

规则管理页签订阅

  1. 规则管理页签的质量监控视角下,找到已创建的质量监控,然后单击image > 告警订阅

    image

  2. 订阅管理对话框中,添加订阅方式接受对象后,单击操作列的保存。保存后,您可以再次添加其他订阅方式。

    image

    订阅方式包括邮件通知邮件和短信通知钉钉群机器人钉钉群机器人@ALL飞书群机器人企业微信机器人自定义Webhook电话

    说明
    • 添加钉钉群、飞书群和企业微信机器人获取Webhook地址后,复制Webhook地址至订阅管理中即可。

    • 仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式

质量监控页签订阅

  1. 质量监控页签,找到已创建的质量监控,然后单击操作列的更多 > 告警订阅

    image

  2. 订阅管理对话框中,添加订阅方式接受对象后,单击操作列的保存。保存后,您可以再次添加其他订阅方式。

    image

    订阅方式包括邮件通知邮件和短信通知钉钉群机器人钉钉群机器人@ALL飞书群机器人企业微信机器人自定义Webhook电话

    说明
    • 添加钉钉群、飞书群和企业微信机器人获取Webhook地址后,复制Webhook地址至订阅管理中即可。

    • 仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式

后续步骤

质量监控运行后,您可以在左侧导航栏的质量运维目录下,单击质量监控运行记录,查看指定表的质量校验情况,以及完整的质量规则校验记录。

附录

附录一:波动率与方差计算公式

  • 波动率计算公式:波动率 = (样本 - 基准值) / 基准值

    • 样本:当天采集的具体的样本的值。例如对于SQL任务表行数,1天波动检测,则样本是当天分区的表行数。

    • 基准值:历史样本的对比值。

    说明
    • 如果规则是SQL任务表行数,1天波动率检测,则基准值是前一天分区产生的表行数。

    • 如果规则是SQL任务表行数,7天平均值波动率检测,则基准值是前7天的表行数据的平均值。

  • 方差波动计算公式:(当次样本 - 历史N天平均值) / 标准差

    说明

    BIGINTDOUBLE等数值类型可以使用方差。

附录二:内置分区表达式

  • $[yyyymmdd-1]

    分区为按日分区,需要校验业务日期分区数据。

  • $[yyyymmdd-1]/hour=$[hh24]

    分区为二级分区,需要校验调度当日分区的所有二级分区。

  • $[yyyymmdd]

    分区是按日分区,需要校验调度当日分区数据。

  • $[yyyymmddhh24miss]

    分区带有24进制时间信息,例如:20211216174847,校验bizdate当日某时间分区数据。

  • $[yyyymmddhh24miss-1/24]

    分区带有24进制时间信息,例如:20211216174847,校验bizdate当日某时间的前一小时分区数据。

  • $[yyyymmdd]000000

    分区为每日0时,例如:20211216000000,校验bizdate当日的0点分区的数据。

  • $[yyyymmdd-7]

    分区为按日分区,例如:20211216,校验调度日期前7日(一周前)的分区。

  • $[hh24miss-1/24]

    分区为小时分区,例如:180000,校验调度时间前一小时的分区。

  • $[hh24miss-30/24/60]

    分区为小时分区,例如180000,校验调度前30分钟的分区。

  • $[add_months(yyyymmdd,-1)]

    分区为按日分区,例如:20211208,校验调度日期前一个月的分区。