数据质量为您提供数十种预设表级别、字段级别的监控模板。本文为您介绍如何按模板配置监控规则。
背景信息
内置模板分为表级和字段级的模板规则,支持您通过内置规则模板来快速为一批表批量创建数据质量规则。还支持您按表配置数据质量规则,详情请参见配置规则:按表(单表)。
使用限制
按模板配置目前支持配置EMR(E-MapReduce)、Hologres、AnalyticDB for PostgreSQL、MaxCompute数据源的监控规则。
进入按模板配置监控规则页面
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据质量。
在左侧导航栏选择 ,进入按模板配置页面。
数据质量提供系统内置的表级规则模板和字段规则模板,您可以单击对应模板后的配置监控规则来批量对表或字段配置监控规则。
配置监控规则
选择需要进行规则配置的模板,单击操作列的配置监控规则,进入该模板的批量新增监控规则页面。
配置监控规则的基本属性。
配置监控规则的基本属性。
参数
描述
引擎/数据源
选择后续需要应用此监控规则的表所属的计算引擎或数据源类型。
说明按模板配置目前支持配置EMR(E-MapReduce)、Hologres、AnalyticDB for PostgreSQL、MaxCompute数据源的监控规则。
规则来源
默认来源为内置模板。
规则模板
此处展示配置选择的规则模板名称。详情请参见查看内置规则模板。
说明平均值、汇总值、最小值和最大值仅对数值型字段生效。
规则名称
规则名称系统会自动生成,您可以按需调整名称后缀。
描述
对配置的监控规则进行简单描述。
配置监控规则的详细属性。
参数
描述
强弱
设置强规则或弱规则:
如果设置强规则,红色异常报警并阻塞下游任务节点,橙色异常报警不阻塞。
如果设置弱规则,红色异常报警不阻塞下游任务节点,橙色异常不报警不阻塞。
比较方式
当模板的规则类型为数值型时,比较方式包括大于、大于等于、等于、不等于、小于、小于等于。
当模板的规则类型为波动率型时,比较方式包括绝对值、上升和下降。
期望值
当模板的规则类型为数值型时,您需要填写期望值。当触发规则校验时将数据探查结果与期望值进行比较。如果发现数据异常,便会触发报警或阻塞。
波动值比较
当模板的规则类型为波动率型时,您可以设置橙色阈值和红色阈值,对数据探查结果的波动率与指定时间内数据采样结果的波动率进行比较。支持上升范围、下降范围或波动范围(绝对值)的比较。
例如,假设规则为强规则,并且规则橙色阈值为5%,红色阈值为10%。
当波动率大于5%且小于等于10%时,将触发橙色报警,任务不会被阻塞,并且发送报警信息。
当波动率大于10%时,将触发红色报警,任务将被阻塞,并且发送报警信息。
启停状态
单击开关按钮启用或停用规则,用于控制该规则是否在生产环境中运行。
重要状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。
单击下一步,进入生成规则页面。
根据您选择的表级规则模板和字段级规则模板,批量添加需要进行该规则校验的表或字段,添加后,请为分区表配置分区表达式。分区表达式用于确定校验数据的采样范围。对于非分区表,系统会默认配置为NOTAPARTITIONTABLE。
添加表或字段。
单击添加表,在弹出的对话框中,选择目标引擎/数据库实例,列表中为您展示当前引擎/数据库中的所有表信息,您还可以输入目标表名对结果进行过滤。选中需要配置监控规则的表添加至列表中。
单击添加字段,在弹出的对话框中,选择目标引擎/数据库实例,待添加表区域为您展示当前引擎/数据库中的所有表信息,选中要配置监控规则的字段所在的表后,选择字段区域为您展示已添加表中的所有字段信息,支持您根据字段名和字段描述对结果进行过滤。选中需要配置监控规则的字段后添加至生成规则页面的列表中。
配置分区表达式。
单击目标表名右侧的按钮,在弹出的批量设置分区表达式页面输入分区表达式,单击确认。数据质量将通过表配置的分区表达式来匹配调度节点每天产出的表分区。如果您需要批量为表配置分区表达式,则可以单击设置分区表达式按钮为选中的表批量添加分区表达式。
单击生成规则,进入规则验证页面。
您可以单击自定义列,按需自定义规则详情表中需要显示的内容。在规则验证页面您可以进行如下操作:
校验规则配置的合理性:试跑
规则创建完成后,您可以选择单个或多个规则进行试跑,在弹出来的试跑对话框中选择调度时间(模拟给定校验被触发的时间),系统会根据此时间以及设定的分区表达式,计算要验证的表的具体分区取值。完成后单击试跑,去校验该表该分区下的数据是否符合当前配置的数据质量校验规则。
试跑后您可以单击操作列的试跑记录,查看试跑状态详情,并进行相应的处理。
说明试跑错误的可能原因为:表或表分区不存在、表数据不符合质量校验规则。
定义报警接收人:订阅管理
您可以单击订阅管理,选择订阅方式及接受对象,目前支持通过邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@ALL、飞书群机器人、企业微信机器人和自定义Webhook,报警给指定接收人。
说明仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式。
定义规则触发方式:关联调度
您可以单击推荐关联调度或手动关联调度,为单个或多个数据质量规则关联产出表数据的调度节点(运维中心中产出表数据的节点,包括自动调度的周期实例,手动触发的补数据实例,测试实例),当节点任务执行时便会触发该数据质量规则校验,您可以设置规则的强弱来控制节点是否失败退出,从而避免脏数据影响扩大。
推荐关联调度:系统会根据产出该表的节点血缘关系选中的规则自动关联推荐的调度节点。
手动关联调度:您可以为选中的规则手动关联指定的调度节点。
重要必须关联相应的调度节点,规则才会被自动触发运行。
删除规则:您可以选择单个或多个规则进行删除。
查看规则详情:您可以单击操作列的规则详情,查看规则详情,并对规则进行修改、启停、删除、设置规则强弱、查看日志等操作。
试跑运行成功且关联调度后,单击保存。确认是否已完成所有配置,确认无误后单击确认完成配置。
附录:Webhook消息格式
DataWorks推送自定义Webhook的报警信息的消息格式及参数说明如下所示:
消息示例
{
"detailUrl": "https://dqc-cn-zhangjiakou.data.aliyun.com/?defaultProjectId=3058#/jobDetail?envType=ODPS&projectName=yongxunQA_zhangbei_standard&tableName=sx_up_001&entityId=10878&taskId=16876941111958fa4ce0e0b5746379cd9bc67999d05f8&bizDate=1687536000000&executeTime=1687694111000",
"datasourceName": "emr_test_01",
"engineTypeName": "EMR",
"projectName": "线上回归项目",
"dqcEntityQuality": {
"entityName": "tb_auto_test",
"actualExpression": "ds=20230625",
"strongRuleAlarmNum": 1,
"weakRuleAlarmNum": 0
},
"ruleChecks": [
{
"blockType": 0,
"warningThreshold": 0.1,
"property": "id",
"tableName": "tb_auto_test",
"comment": "测试规则",
"checkResultStatus": 2,
"templateName": "字段唯一值个数期望值校验",
"checkerName": "fulx",
"ruleId": 123421,
"fixedCheck": false,
"op": "",
"upperValue": 22200,
"actualExpression": "ds=20230625",
"externalId": "123112232",
"timeCost": "10",
"trend": "up",
"externalType": "CWF2",
"bizDate": 1600704000000,
"checkResult": 2,
"matchExpression": "ds=$[yyyymmdd]",
"checkerType": 0,
"projectName": "auto_test",
"beginTime": 1600704000000,
"dateType": "YMD",
"criticalThreshold": "0.6",
"isPrediction": false,
"ruleName": "规则的名称",
"checkerId": 7,
"discreteCheck": true,
"endTime": 1600704000000,
"MethodName": "max",
"lowerValue": 2344,
"entityId": 12142421,
"whereCondition": "type!='type2'",
"expectValue": 90,
"templateId": 5,
"taskId": "16008552981681a0d6",
"id": 234241453,
"open": true,
"referenceValue": [
{
"discreteProperty": "type1",
"value": 20,
"bizDate": "1600704000000",
"singleCheckResult": 2,
"threshold": 0.2
}
],
"sampleValue": [
{
"discreteProperty": "type2",
"bizDate": "1600704000000",
"value": 23
}
]
}
]
}
参数说明
名称 | 类型 | 示例值 | 描述 |
ProjectName | String | autotest | 需要进行数据质量校验的引擎或者数据源名称。 |
actualExpression | String | ds=20200925 | 被校验的数据源表的实际分区。 |
RuleChecks | Array of RuleChecks | 校验结果的列表。 | |
BlockType | Integer | 1 | 校验规则的强弱。强弱表示规则的重要程度。取值如下:
|
WarningThreshold | Float | 0.1 | 橙色阈值。表示与样本预期的偏离程度,您可以根据业务需求自定义该阈值。 |
Property | String | type | 规则属性的字段,即被校验数据源表的column名称。 |
TableName | String | dual | 进行校验的表名称。 |
Comment | String | 规则的描述信息。 | 校验规则的描述。 |
CheckResultStatus | Integer | 2 | 校验结果状态。 |
TemplateName | String | 字段唯一值个数期望值校验 | 使用的校验模板的名称。 |
CheckerName | String | fulx | 校验器的名称。 |
RuleId | Long | 123421 | 规则ID。 |
FixedCheck | Boolean | false | 是否为固定值校验。取值如下:
|
Op | String | > | 比较符。 |
UpperValue | Float | 22200 | 预测上限。设置阈值后自动生成。 |
ActualExpression | String | ds=20200925 | 被校验的数据源表的实际分区。 |
ExternalId | String | 123112232 | 调度任务的节点ID。 |
TimeCost | String | 10 | 执行校验任务花费的时间。 |
Trend | String | up | 校验结果的趋势。 |
ExternalType | String | CWF2 | 调度系统的类型。目前仅支持CWF。 |
BizDate | Long | 1600704000000 | 业务日期。如果被校验的业务主体为离线数据,则业务日期通常为执行校验操作的前一天。 |
CheckResult | Integer | 2 | 校验结果。 |
MatchExpression | String | ds=$[yyyymmdd] | 分区表达式。 |
CheckerType | Integer | 0 | 校验器的类型。 |
ProjectName | String | autotest | 需要进行数据质量校验的引擎或者数据源名称。 |
BeginTime | Long | 1600704000000 | 执行校验操作的开始时间。 |
DateType | String | YMD | 调度周期的类型。通常为YMD,即年任务、月任务、天任务。 |
CriticalThreshold | Float | 0.6 | 红色阈值。表示与样本预期的偏离程度。您可以根据业务需求自定义该阈值。使用强规则并触发红色阈值,会阻塞调度任务。 |
IsPrediction | Boolean | false | 是否为预测的结果。取值如下:
|
RuleName | String | 规则的名称。 | 规则的名称。 |
CheckerId | Integer | 7 | 校验器的ID。 |
DiscreteCheck | Boolean | true | 是否为离散校验。取值如下:
|
EndTime | Long | 1600704000000 | 查询校验结果的截止时间。 |
MethodName | String | max | 采集样本数据的方法。包括avg、count、sum、min、max、count_distinct、user_defined、table_count、table_size、table_dt_load_count、table_dt_refuseload_count、null_value、null_value/table_count、(table_count-count_distinct)/table_count、table_count-count_distinct等。 |
LowerValue | Float | 2344 | 预测下限。根据您设置的阈值自动生成。 |
EntityId | Long | 14534343 | 分区表达式ID。 |
WhereCondition | String | type!='type2' | 校验任务使用的过滤条件。 |
ExpectValue | Float | 90 | 期望值。 |
TemplateId | Integer | 5 | 使用的校验模板的ID。 |
TaskId | String | 16008552981681a0d6**** | 校验任务的ID。 |
Id | Long | 2231123 | 主键ID。 |
ReferenceValue | Array of ReferenceValue | 历史样本值。 | |
DiscreteProperty | String | type1 | 通过group by分组后的样本字段取值。例如group by性别字段,则DiscreteProperty为男生、女生和null。 |
Value | Float | 20 | 样本值。 |
BizDate | String | 1600704000000 | 业务日期。如果被校验的业务主体为离线数据,则业务日期通常为执行校验操作的前一天。 |
SingleCheckResult | Integer | 2 | 校验结果的字符串。 |
Threshold | Float | 0.2 | 阈值。 |
SampleValue | Array of SampleValue | 当前使用的样本。 | |
DiscreteProperty | String | type2 | 通过group by分组后的样本字段取值。例如group by性别字段,则DiscreteProperty为男生、女生和null。 |
BizDate | String | 1600704000000 | 业务日期。如果被校验的业务主体为离线数据,则业务日期通常为执行校验操作的前一天。 |
Value | Float | 23 | 样本值。 |
Open | Boolean | true | 规则是否开启。 |
后续步骤
完成后当您进行配置规则:按表(单表)质量监控规则的时候,即可查看已配置的模板规则详情,并对该规则手动设置订阅管理,目前支持通过邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@ALL、飞书群机器人、企业微信机器人和自定义Webhook,报警给指定接收人。
如果您需要在指定业务时间内,不符合质量校验规则的数据不阻塞任务运行,可以用去噪管理功能,详情请参见:配置数据质量规则去噪。