全部产品
Search
文档中心

大数据开发治理平台 DataWorks:配置规则:按模板(批量)

更新时间:Nov 21, 2024

数据质量为您提供多种预设表级别、字段级别的监控模板。本文为您介绍如何按模板配置监控规则。

使用限制

按模板配置目前支持配置MaxCompute、E-MapReduce、Hologres和AnalyticDB PostgreSQL数据源的监控规则。

配置流程

按模板配置质量规则的主要流程如下:

  1. 选择规则模板并配置校验方式

    内置模板分为表级和字段级的模板规则,选择模板后,以待校验的为对象,定义该表数据质量校验规则的校验方式。通过数据质量规则定义对该表数据的具体校验方式,从而确定表数据是否符合预期。

  2. 批量添加需要规则校验的表或字段

    选择待批量校验的表或字段,将规则模板应用到目标表或字段上。

  3. 新建或关联质量监控

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

操作步骤

步骤一:进入按模板配置监控规则页面

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

  2. 在左侧导航栏选择规则配置 > 按模板配置,进入按模板配置页面。

    数据质量提供系统内置的表级规则模板和字段级规则模板,您可以单击对应模板后的配置监控规则来批量对表或字段配置监控规则。

    image

步骤二:配置监控规则详细属性

  1. 选择需要进行规则配置的模板,单击操作列的配置监控规则,进入该模板的批量新增监控规则页面。

  2. 配置监控规则的基本属性。

    参数

    描述

    数据源类型

    选择后续需要应用此监控规则的表所属的数据源类型。

    说明

    按模板配置目前支持配置MaxCompute、E-MapReduce、Hologres和AnalyticDB PostgreSQL数据源的监控规则。

    规则来源

    默认来源为内置模板

    规则模板

    此处展示配置选择的规则模板名称。详情请参见查看内置规则模板

    规则名称

    规则名称系统会自动生成,您可以按需调整名称后缀。

    描述

    对配置的监控规则进行简单描述。

  3. 配置监控规则的高级属性。image

    参数

    描述

    重要程度

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

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

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

    比较方式

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

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

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

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

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

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

      说明

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

    监控阈值

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

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

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

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

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

    启停状态

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

    重要

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

  4. 单击下一步,进入生成规则页面。

步骤三:批量添加需要规则校验的表或字段

根据您选择的表级规则模板字段级规则模板,批量添加需要进行该规则校验的表或字段。

添加表

  1. 单击添加表

  2. 在弹出的批量添加页面中,选择待配置规则的表,列表中为您展示MaxCompute的所有表信息,您还可以输入目标表名对结果进行过滤。

  3. 选中需要配置监控规则的表后,单击确定,将其添加至列表中。

添加字段

  1. 单击添加字段

  2. 在弹出的选择字段对话框中,选择目标表,待选择表区域会展示MaxCompute的所有表信息。

  3. 选中要配置监控规则的字段所在的表后,选择字段区域为您展示已选择表中的所有字段信息,支持您根据字段名字段描述对结果进行过滤。

  4. 选中需要配置监控规则的字段后,单击添加,将其添加至列表中。

步骤四:新建或关联质量监控

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

你可以单独配置或批量配置。

批量配置

  1. 选择多个待添加规则的表或字段后,单击设置质量监控

    image

  2. 支持批量自动关联、批量取消关联批量快速新增

    • 自动关联:选中的表或字段会自动关联已有的质量监控。

    • 取消关联:选中的表或字段会取消已关联的质量监控。

    • 批量快速新增:为已选择的表配置质量监控的数据范围和运行设置。

      image

      配置项

      说明

      数据范围

      分区表

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

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

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

      运行设置

      触发方式

      监控规则的运行方式。

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

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

      关联调度节点

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

      选择运行资源

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

单表配置

  1. 在目标表名或字段右侧的质量监控列,您可以为质量规则关联质量监控任务,支持选择已有的质量监控任务或新建质量监控任务。image

  2. 如果没有质量监控任务,您可以单击新建质量监控。配置如下参数:image

    配置项

    参数

    说明

    基本配置

    质量监控名称

    自定义监控规则名称。

    监控对象

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

    数据范围

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

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

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

    说明

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

    运行设置

    触发方式

    监控规则的运行方式。

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

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

    关联调度节点

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

    选择运行资源

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

    质量问题处理策略

    问题处置策略

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

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

      默认为强规则·红色异常

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

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

    选择质量规则

    选择质量规则

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

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

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

步骤五:测试规则执行

  1. 单击生成规则,进入规则验证页面。在规则验证页面您可以进行如下操作:

    • 校验规则配置的合理性:测试运行

      规则创建完成后,您可以选择单个或多个规则进行测试运行,在弹出的测试运行对话框中选择调度时间(模拟给定校验被触发的时间),系统会根据此时间以及数据范围,计算要验证的表的具体分区取值。完成后单击测试运行,以校验该表该分区下的数据是否符合当前配置的数据质量校验规则。

      测试运行后,您可以单击操作列的运行记录,查看测试运行的详情,并进行相应的处理。

    • 定义报警接收人:订阅管理

      您可以单击订阅管理,选择订阅方式接受对象,目前支持通过邮件通知邮件和短信通知钉钉群机器人钉钉群机器人@ALL飞书群机器人企业微信机器人自定义Webhook电话,触发报警后,指定接收人将收到报警信息。

      说明

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

    • 定义规则触发方式:关联调度

      您可以单击推荐设置运行方式手动设置运行方式,为单个或多个数据质量规则关联产出表数据的调度节点(运维中心中产出表数据的节点,包括自动调度的周期实例,手动触发的补数据实例,测试实例),当节点任务执行时便会触发该数据质量规则校验,您可以设置规则的强弱来控制节点是否失败退出,从而避免脏数据影响扩大。

      • 推荐设置运行方式:系统会根据产出该表的节点血缘关系选中的规则自动关联推荐的调度节点。

      • 手动设置运行方式:您可以为选中的规则手动关联指定的调度节点。

      重要

      必须关联相应的调度节点,规则才会被自动触发运行。

    • 删除:您可以选择单个或多个规则进行删除。

    • 规则详情:您可以单击操作列的规则详情,查看规则详情,并对规则进行修改、启停、删除、设置规则强弱、查看日志等操作。

  2. 试跑运行成功且关联调度后,单击完成验证

后续步骤

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

附录: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

校验规则的强弱。强弱表示规则的重要程度。取值如下:

  • 1,表示强规则。

  • 0,表示弱规则。

    您可以根据实际需求设置重要的规则为强规则。如果使用强规则并触发了红色告警,则会阻塞调度任务。

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

是否为固定值校验。取值如下:

  • true:是固定值校验。

  • 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

是否为预测的结果。取值如下:

  • true:是预测的结果。

  • false:不是预测的结果。

RuleName

String

规则的名称。

规则的名称。

CheckerId

Integer

7

校验器的ID。

DiscreteCheck

Boolean

true

是否为离散校验。取值如下:

  • true:是离散校验。

  • false:非离散校验。

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

规则是否开启。