数据质量为您提供多种预设表级别、字段级别的监控模板。本文为您介绍如何按模板配置监控规则。
使用限制
按模板配置目前支持配置MaxCompute、E-MapReduce、Hologres和AnalyticDB PostgreSQL数据源的监控规则。
配置流程
按模板配置质量规则的主要流程如下:
内置模板分为表级和字段级的模板规则,选择模板后,以待校验的表为对象,定义该表数据质量校验规则的校验方式。通过数据质量规则定义对该表数据的具体校验方式,从而确定表数据是否符合预期。
选择待批量校验的表或字段,将规则模板应用到目标表或字段上。
以校验的表的具体数据范围为对象(如分区表的具体分区),通过质量规则关联质量监控的方式,定义对象数据需要进行哪些质量规则校验。
操作步骤
步骤一:进入按模板配置监控规则页面
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据质量。
在左侧导航栏选择
,进入按模板配置页面。数据质量提供系统内置的表级规则模板和字段级规则模板,您可以单击对应模板后的配置监控规则来批量对表或字段配置监控规则。
步骤二:配置监控规则详细属性
选择需要进行规则配置的模板,单击操作列的配置监控规则,进入该模板的批量新增监控规则页面。
配置监控规则的基本属性。
参数
描述
数据源类型
选择后续需要应用此监控规则的表所属的数据源类型。
说明按模板配置目前支持配置MaxCompute、E-MapReduce、Hologres和AnalyticDB PostgreSQL数据源的监控规则。
规则来源
默认来源为内置模板。
规则模板
此处展示配置选择的规则模板名称。详情请参见查看内置规则模板。
规则名称
规则名称系统会自动生成,您可以按需调整名称后缀。
描述
对配置的监控规则进行简单描述。
配置监控规则的高级属性。
参数
描述
重要程度
设置规则在业务中的强弱程度。
强规则:比较重要的规则,如果出现红色异常,默认会阻塞质量监控关联的调度任务的执行。
弱规则:普通规则,如果出现红色异常,默认不会阻塞质量监控关联的调度任务的执行。
比较方式
定义规则具体怎么校验表数据是否符合预期。
手动设置:自定义数据产出结果与规则的比较方式。
不同规则模板,可选择的比较方式不同,具体请以实际界面为准。
支持数值型结果对比,通常与固定值(即期望值)进行比较,比较方式包括大于、大于等于、等于、不等于、小于、小于等于。支持您自定义正常数据范围(正常阈值)与异常数据范围(红色阈值)。
支持波动型结果对比,通常是进行范围比较,比较方式包括绝对值、上升、下降。支持您自定义正常数据范围(正常阈值),您还可以根据异常偏离程度定义数据产出存在异常(橙色阈值)与数据产出不符合预期(红色阈值)。
智能动态阈值:您无需手动配置波动阈值或期望值,系统会根据智能算法,自动判断合理阈值;若发现数据异常,会即时触发告警或阻塞。动态阈值也可支持强、弱规则。
说明仅自定义SQL、自定义范围、动态阈值类型的质量规则支持智能动态阈值比较方式。
监控阈值
当比较方式为手动设置时,您可以自行设置正常阈值与红色阈值。
正常阈值:当数据质量规则校验结果满足此处设置的值时,说明数据校验符合预期。
红色阈值:当数据质量规则校验结果满足此处设置的值时,说明数据校验不符合预期。
当规则为波动型校验时,您需要指定橙色阈值。
橙色阈值:当数据质量规则校验结果满足此处设置的值时,说明数据存在异常但不影响业务运行。
启停状态
规则的启用和停用状态,用于控制该规则是否在生产环境中运行。
重要状态设置为停用时,规则将无法触发测试运行,并且不会被关联的调度任务触发运行。
单击下一步,进入生成规则页面。
步骤三:批量添加需要规则校验的表或字段
根据您选择的表级规则模板或字段级规则模板,批量添加需要进行该规则校验的表或字段。
添加表
单击添加表。
在弹出的批量添加页面中,选择待配置规则的表,列表中为您展示MaxCompute的所有表信息,您还可以输入目标表名对结果进行过滤。
选中需要配置监控规则的表后,单击确定,将其添加至列表中。
添加字段
单击添加字段。
在弹出的选择字段对话框中,选择目标表,待选择表区域会展示MaxCompute的所有表信息。
选中要配置监控规则的字段所在的表后,选择字段区域为您展示已选择表中的所有字段信息,支持您根据字段名和字段描述对结果进行过滤。
选中需要配置监控规则的字段后,单击添加,将其添加至列表中。
步骤四:新建或关联质量监控
以校验的表的具体数据范围为对象(如分区表的具体分区),通过质量规则关联质量监控的方式,定义对象数据需要进行哪些质量规则校验。
你可以单独配置或批量配置。
批量配置
选择多个待添加规则的表或字段后,单击设置质量监控。
支持批量自动关联、批量取消关联和批量快速新增。
自动关联:选中的表或字段会自动关联已有的质量监控。
取消关联:选中的表或字段会取消已关联的质量监控。
批量快速新增:为已选择的表配置质量监控的数据范围和运行设置。
配置项
说明
数据范围
分区表
通过分区表达式定义该表需要进行质量规则校验的分区。
非分区表:无需配置,默认为全表。
分区表:表达式格式:
分区名=分区值
,分区值可以是固定值,也可以是附录二:内置分区表达式。
运行设置
触发方式
监控规则的运行方式。
生产调度触发:通过关联DataWorks运维中心中指定的周期调度任务,任务运行完成后,自动触发该质量监控下的质量规则(空跑任务不会触发质量规则校验)。
手动触发:手动触发当前质量监控关联的质量监控规则。
关联调度节点
如果触发方式配置为生产调度触发,可以使用配置此参数,指定关联的调度节点,指定的调度节点运行完成后,自动触发质量监控规则。
选择运行资源
执行质量规则检测所需的运行资源,默认选择该工作空间下监控表所属数据源。如选取其他数据源,需确认对应资源可对该表进行访问。
单表配置
在目标表名或字段右侧的质量监控列,您可以为质量规则关联质量监控任务,支持选择已有的质量监控任务或新建质量监控任务。
如果没有质量监控任务,您可以单击新建质量监控。配置如下参数:
配置项
参数
说明
基本配置
质量监控名称
自定义监控规则名称。
监控对象
数据质量校验的对象,默认为当前表。
数据范围
通过分区表达式定义该表需要进行质量规则校验的分区。
非分区表:无需配置,默认为全表。
分区表:表达式格式:
分区名=分区值
,分区值可以是固定值,也可以是附录二:内置分区表达式。
说明使用自定义模板、自定义SQL配置规则时,此处配置不生效。即使用自定义模板、自定义SQL配置的质量规则校验的分区由自定义SQL决定。
运行设置
触发方式
监控规则的运行方式。
生产调度触发:通过关联DataWorks运维中心中指定的周期调度任务,任务运行完成后,自动触发该质量监控下的质量规则(空跑任务不会触发质量规则校验)。
手动触发:手动触发当前质量监控关联的质量监控规则。
关联调度节点
如果触发方式配置为生产调度触发,可以使用配置此参数,指定关联的调度节点,指定的调度节点运行完成后,自动触发质量监控规则。
选择运行资源
执行质量规则检测所需的运行资源,默认选择该工作空间下监控表所属数据源。如选取其他数据源,需确认对应资源可对该表进行访问。
质量问题处理策略
问题处置策略
配置在检测到数据质量问题后,具体的阻塞或告警策略。
阻塞:当检测到数据质量问题后,将识别触发该表质量检测的生产调度节点,并将该节点设置为失败,下游节点将不执行,以此阻塞生产链路,以避免问题数据污染扩散。
默认为
强规则·红色异常
。告警:当检测到数据质量问题后,将对该质量监控的告警订阅渠道发送告警信息。
默认为:
强规则·红色异常
、强规则·橙色异常
、强规则·校验失败
、弱规则·红色异常
、弱规则·橙色异常
、弱规则·校验失败
。
选择质量规则
选择质量规则
通过质量监控关联质量规则的方式,确定通过哪些规则来校验该表当前数据范围是否符合预期。
说明不同分区可新建多个质量监控并关联不同的质量规则进行校验,以实现不同分区校验规则不同的目的。
如果还未创建质量规则,本步骤可暂不添加,您可以先完成质量监控的创建,在后续创建质量规则时,将规则添加至质量监控中。质量规则的创建,详情请参见步骤三:配置数据质量规则。
步骤五:测试规则执行
单击生成规则,进入规则验证页面。在规则验证页面您可以进行如下操作:
校验规则配置的合理性:测试运行
规则创建完成后,您可以选择单个或多个规则进行测试运行,在弹出的测试运行对话框中选择调度时间(模拟给定校验被触发的时间),系统会根据此时间以及数据范围,计算要验证的表的具体分区取值。完成后单击测试运行,以校验该表该分区下的数据是否符合当前配置的数据质量校验规则。
测试运行后,您可以单击操作列的运行记录,查看测试运行的详情,并进行相应的处理。
定义报警接收人:订阅管理
您可以单击订阅管理,选择订阅方式及接受对象,目前支持通过邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@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 | 规则是否开启。 |