数据质量支持按照数据表配置质量监控规则,用来监控表数据是否符合要求,自动拦截问题任务,阻断脏数据向下游蔓延,保障产出的表数据符合预期。本文为您介绍如何配置表的质量监控规则并执行质量监控及其他相关操作。
前提条件
已采集引擎元数据。质量规则需基于引擎数据表进行配置,并作用于对应的表数据,因此,配置质量监控规则前,您需先采集元数据。详情请参见元数据采集。
配置流程
按表配置质量规则主要流程如下:
选择待配置规则校验的表。
为表创建质量监控。
以校验的表的具体数据范围为对象(如分区表的具体分区),通过质量规则关联质量监控的方式,定义对象数据需要进行哪些质量规则校验。
可新建多个质量监控校验同一张表的不同分区,每个质量监控关联不同的质量规则,达到同一张表不同分区数据质量校验逻辑不同的目的。
定义质量监控的触发方式,即是否在调度节点运行时触发规则校验,还是需要手动触发才会进行该表质量校验。
定义何种情况下需要发送告警信息,您可根据数据校验结果异常等级自行决定何种异常需要发送告警信息。当表数据变更自动进行数据质量规则校验时,您可根据数据异常程度决定是否需要阻塞任务执行。
配置数据质量规则添加到质量监控中。
以质量监控中需要校验的表为对象,定义该表数据质量校验规则的校验方式。通过数据质量规则定义对该表数据的具体校验方式,从而确定该表数据是否符合预期。
数据质量监控规则包括基于模板创建的系统模板规则,以及可自定义SQL逻辑的自定义模板规则。其中:
测试及订阅质量监控。
使用限制
当前仅支持为MaxCompute、E-MapReduce(简称EMR)、Hologres、AnalyticDB PostgreSQL、AnalyticDB MySQL数据源配置质量监控规则。并且,规则配置后,产出表数据的调度节点需要使用网络已连通的资源组进行调度,才可正常触发数据质量规则校验。资源组的相关配置,详情请参见新增和使用Serverless资源组。
动态阈值类规则需要有21天采样记录,若少于21天,动态阈值类规则会校验异常。若无21天采样记录,您可在配置了动态阈值类规则且规则关联调度任务后,通过补数据功能补齐21天采样记录。
操作步骤
步骤一:进入表质量详情页
进入数据质量页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据质量。
进入按表配置监控规则。
在左侧导航栏,单击
,进入按表配置规则页面。左侧数据源列表按需选择待配置规则的表所在的数据库。
根据数据库类型、数据库、表名等条件筛选,单击目标表名或操作列的监控配置,进入该表的表质量详情页。
该页面展示了当前表所有已配置的质量规则,您可通过规则是否已关联质量监控来快速过滤目标规则,并对未关联质量监控的规则定义规则运行方式。
步骤二:创建质量监控
新建质量监控。
您可以通过如下两种方式新建质量监控:
规则管理页
在表的表质量详情页,单击规则管理页签。单击质量监控视角后的
,新建质量监控。
质量监控页
在表的表质量详情页,切换到质量监控页签。单击新建质量监控。
配置质量监控的相关参数。
参数说明:
配置项
参数
说明
基本配置
质量监控名称
自定义监控规则名称。
监控对象
数据质量校验的对象,默认为当前表。
数据范围
通过分区表达式定义该表需要进行质量规则校验的分区。
非分区表:无需配置,默认为全表。
分区表:表达式格式:
分区名=分区值
,分区值可以是固定值,也可以是附录二:内置分区表达式。
说明使用自定义模板、自定义SQL配置规则时,此处配置不生效。即使用自定义模板、自定义SQL配置的质量规则校验的分区由自定义SQL决定。
运行设置
触发方式
监控规则的运行方式。
生产调度触发:通过关联DataWorks运维中心中指定的周期调度任务,任务运行完成后,自动触发该质量监控下的质量规则(空跑任务不会触发质量规则校验)。
手动触发:手动触发当前质量监控关联的质量监控规则。
关联调度节点
如果触发方式配置为生产调度触发,可以使用配置此参数,指定关联的调度节点,指定的调度节点运行完成后,自动触发质量监控规则。
选择运行资源
执行质量规则检测所需的运行资源,默认选择该工作空间下监控表所属数据源。如选取其他数据源,需确认对应资源可对该表进行访问。
质量问题处理策略
问题处置策略
配置在检测到数据质量问题后,具体的阻塞或告警策略。
阻塞:当检测到数据质量问题后,将识别触发该表质量检测的生产调度节点,并将该节点设置为失败,下游节点将不执行,以此阻塞生产链路,以避免问题数据污染扩散。
默认为
强规则·红色异常
。告警:当检测到数据质量问题后,将对该质量监控的告警订阅渠道发送告警信息。
默认为:
强规则·红色异常
、强规则·橙色异常
、强规则·校验失败
、弱规则·红色异常
、弱规则·橙色异常
、弱规则·校验失败
。
选择质量规则
选择质量规则
通过质量监控关联质量规则的方式,确定通过哪些规则来校验该表当前数据范围是否符合预期。
说明不同分区可新建多个质量监控并关联不同的质量规则进行校验,以实现不同分区校验规则不同的目的。
如果还未创建质量规则,本步骤可暂不添加,您可以先完成质量监控的创建,在后续创建质量规则时,将规则添加至质量监控中。质量规则的创建,详情请参见步骤三:配置数据质量规则。
(可选)您可通过勾选订阅质量告警(邮件)的方式,快速订阅当前质量监控结果。
单击保存。
步骤三:配置数据质量规则
在表质量详情页的规则管理页签,单击新建规则,进入规则配置页面。
创建数据质量规则。
数据质量提供以下方式配置质量监控规则,您可以按需选择。
方式一:系统模板规则
数据质量内置几十种监控规则,您可以根据需要从规则模板中快速创建质量监控规则。
说明您可以单击顶部的+ 系统模板规则,然后修改规则模板参数调整到目标规则模板。
您也可以在左侧找到需要的系统模板规则后,单击+ 使用。
同时可以添加多个规则。
方式二:自定义模板规则
说明在使用自定义模板创建规则之前,您需要先前往创建并管理自定义规则模板。
中创建自定义规则模板后才可使用。具体操作,请参见引用自定义模板时,将自动显示该模板的基本配置(例如Flag参数,校验SQL)等,您可以自定义规则名称,并按照规则类型,配置监控阈值(例如数值型规则需要定义正常阈值、红色阈值,此外,波动型规则还需要定义橙色阈值。)
方式三:自定义SQL
该方式支持您自定义该表的数据质量校验逻辑。
(可选)您可以将配置的规则添加到质量监控中,质量监控的更多信息,请参见步骤二:创建质量监控。
说明此处配置的质量规则,只有添加到质量监控中,才会被触发,您可以在此处选择已经创建的质量监控,或在配置质量监控时,在选择质量规则步骤选择此处配置的质量规则。
单击确定。
步骤四:测试规则执行
您可以通过如下方式测试质量监控中规则的触发情况。
规则管理页签测试运行
在规则管理页签的质量监控视角下,找到已创建的质量监控,然后单击测试运行。
在测试运行对话框中,确认数据范围、调度时间等参数后,单击测试运行。当显示启动成功后,您可以单击查看详情,查看测试运行的具体结果。
质量监控页签测试运行
在质量监控页签,找到已创建的质量监控,然后单击操作列的测试。
在测试运行对话框中,确认数据范围、调度时间等参数后,单击测试运行。当显示启动成功后,您可以单击查看详情,查看测试运行的具体结果。
步骤四: 订阅质量监控
触发规则后默认仅通知规则创建者,若您想通知其他用户,您还需要为其他用户订阅质量监控,使报警可以通过指定方式通知给指定用户。
您可以通过如下方式订阅质量监控。
规则管理页签订阅
在规则管理页签的质量监控视角下,找到已创建的质量监控,然后单击
。在订阅管理对话框中,添加订阅方式和接受对象后,单击操作列的保存。保存后,您可以再次添加其他订阅方式。
订阅方式包括邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@ALL、飞书群机器人、企业微信机器人、自定义Webhook和电话。
说明添加钉钉群、飞书群和企业微信机器人获取Webhook地址后,复制Webhook地址至订阅管理中即可。
仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式。
质量监控页签订阅
在质量监控页签,找到已创建的质量监控,然后单击操作列的
。在订阅管理对话框中,添加订阅方式和接受对象后,单击操作列的保存。保存后,您可以再次添加其他订阅方式。
订阅方式包括邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@ALL、飞书群机器人、企业微信机器人、自定义Webhook和电话。
说明添加钉钉群、飞书群和企业微信机器人获取Webhook地址后,复制Webhook地址至订阅管理中即可。
仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式。
后续步骤
质量监控运行后,您可以在左侧导航栏的质量运维目录下,单击质量监控和运行记录,查看指定表的质量校验情况,以及完整的质量规则校验记录。
附录
附录一:波动率与方差计算公式
波动率计算公式:
波动率 = (样本 - 基准值) / 基准值
样本:当天采集的具体的样本的值。例如对于SQL任务表行数,1天波动检测,则样本是当天分区的表行数。
基准值:历史样本的对比值。
说明如果规则是SQL任务
表行数,1天波动率
检测,则基准值是前一天分区产生的表行数。如果规则是SQL任务
表行数,7天平均值波动率
检测,则基准值是前7天的表行数据的平均值。
方差波动计算公式:
(当次样本 - 历史N天平均值) / 标准差
说明仅BIGINT和DOUBLE等数值类型可以使用方差。
附录二:内置分区表达式
$[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,校验调度日期前一个月的分区。