数据质量支持按照数据表配置质量监控规则,用来监控表数据是否符合要求,自动拦截问题任务,阻断脏数据向下游蔓延,保障产出的表数据符合预期。规则配置完成后,您可先试跑该规则,确保质量规则的配置符合预期。同时,还可对质量规则执行订阅、复制、查看分区操作日志、查看上一次校验结果等管理操作。本文为您介绍如何配置表的质量监控规则并进行相关管理操作。
背景信息
数据质量监控规则包括基于模板创建的模板规则,及可⾃定义SQL逻辑的自定义规则。其中:
模板规则:可通过DataWorks提供的43种内置规则创建,也可通过您自行维护的规则模板(即您可将常用的自定义规则固化为规则模板,便于后续快速复用)创建。
自定义规则:若模板规则无法满足您对分区表达式中数据质量的监控需求,则可使用自定义规则。
通常,数据表的内容较多且繁杂,为避免全表扫描,两类规则均是基于分区表达式创建,用于监控指定分区的表数据情况。因此,创建规则前,您需先创建分区表达式。规则创建后,您还可根据需要执行相关规则管理操作,详情请参见管理规则。
前提条件
已采集引擎元数据。质量规则需基于引擎数据表进行配置,并作用于对应的表数据,因此,配置质量监控规则前,您需先采集元数据。详情请参见元数据采集。
使用限制
当前仅支持手动配置规则,不支持自动落标规则。
当前仅支持为MaxCompute、E-MapReduce(简称EMR)、Hologres、AnalyticDB for PostgreSQL、CDH等数据源配置质量监控规则。并且,规则配置后,产出表数据的调度节点需要使用网络已连通的独享调度资源组进行调度,才可正常触发数据质量规则校验。独享调度资源组的相关配置,详情请参见新增和使用独享调度资源组。
动态阈值类规则需要有21天采样记录,若少于21天,动态阈值类规则会校验异常。若无21天采样记录,您可在配置了动态阈值类规则且规则关联调度任务后,通过补数据功能补齐21天采样记录。
进入按表配置监控规则页面
进入数据质量页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据质量。
进入按表配置监控规则。
在左侧导航栏,单击
,进入按表配置规则页面。左侧数据源列表为您展示当前工作空间下所有在数据开发中绑定的数据源,您可以选择表所在数据源。
根据引擎、表名等条件进行筛选,单击目标表后监控配置,进入该表的规则配置界面。
创建分区表达式
通常,数据表的内容较多较杂,为避免全表扫描,数据质量基于分区表达式来配置质量监控规则,用于监控指定分区的表数据情况。配置规则前,您需在表的规则配置界面,按照如下步骤创建分区表达式。
若规则监控的对象为非分区表,则可配置分区表达式为NOTAPARTITIONTABLE。
若规则监控的对象为分区表,则可配置分区表达式为业务日期格式的分区表达式。例如,dt=$[yyyymmdd]。
不同类型分区表达式的格式及说明如下。
分区表达式类型 | 分区表达式格式 | 说明 |
一级分区表达式 | 分区名=分区值 | 分区值可以是固定值,也可以是内置参数表达式。 |
多级分区表达式 | 1级分区名=分区值/2级分区名=分区值/N级分区名=分区值 | 分区值可以是固定值,也可以是内置参数表达式。参数必须使用中括号表示,例如,$[yyyymmdd-N]。分区表必须配置到最后一级分区。 |
DataWorks为您提供了部分内置的业务日期格式分区表达式,可直接使用。若内置表达式无法满足您的需要,则可根据需要输入自定义表达式。更多时间业务日期分区表达式,详情请参见调度参数支持的格式。内置的业务日期格式分区表达式如下表。
数据质量规则中,分区表达式不支持使用大括号相关格式。例如,${yyyymmdd-1}。
分区表达式 | 描述 |
dt=$[yyyymmdd] | 表示获取定时时间。 |
dt=$[yyyymmdd-1] | 表示获取业务日期。 |
dt=$[yyyymmddhh24miss] | 表示获取定时时间。精确到秒。 |
dt=$[yyyymmddhh24miss-1/24] | 表示获取定时时间的前一小时。精确到秒。 |
dt=$[yyyymmdd]000000 | 表示获取整点定时时间。 |
dt=$[yyyymmdd-7] | 表示获取一周前。精确到天。 |
dt=$[hh24miss-1/24] | 表示获取一小时前。 |
dt=$[hh24miss-30/24/60] | 表示获取半小时前。 |
dt=$[add_months(yyyymmdd,-1)] | 表示获取上个月今天的日期。精确到天。 |
NOTAPARTITIONTABLE | 非分区表可选择该分区表达式。 |
配置分区表达式后,单击计算,数据质量会以当前时间作为调度时间,计算出分区表达式的实际结果,用来验证分区表达式是否正确。表达式创建完成后,您可基于该表达式创建模板规则或创建自定义规则。
若您有不需要的分区表达式,可在分区表达式列表将其删除。如果该分区表达式已经配置有质量监控规则,删除时会同步删除该表达式下的所有规则。请谨慎操作。
创建模板规则
创建模板规则分为添加监控规则和快捷添加。
添加监控规则:提供细粒度的数据监控,可根据需要配置规则的强弱、阈值、比较方式等多种监控参数。若需细粒度的监控数据,可使用该方式。
快捷添加:提供粗粒度的表和字段级常用规则。若需快速体验质量监控规则功能,或对数据的监控粒度较粗,可使用该方式。
添加监控规则
该方式可基于内置模板或规则模板库创建监控规则:
内置模板:系统提供,不可更改,共含有43种表级和字段级的模板规则供您使用。
规则模板库:个人维护,可按需更改,是将您创建的使用较多的自定义规则固化为规则模板,便于后续直接使用。
本文以使用内置模板为例,为您介绍添加监控规则的主要参数配置。
参数 | 描述 |
规则名称 | 自定义的规则名称。 |
强弱 | 设置规则的强弱程度,不同程度对下游任务的影响不同。
|
动态阈值 | 根据业务需求,选择是否开启动态阈值。 开启后,无需手动配置波动阈值或期望值,系统会根据智能算法,自动判断合理阈值。若发现数据异常,立即触发报警或阻塞。 |
规则来源 | 包括内置模板和规则模板库。
说明 您需购买DataWorks企业版及以上版本,才可以选择规则模板库。购买或升级DataWorks,详情请参见购买指引。 |
规则字段 | 包括表级规则和字段级规则,字段级规则包括数值型和非数值型。 |
规则模板 | 数据质量为您提供43种内置表级别、字段级别的监控模板可直接选择。详情请参见查看内置规则模板。 说明 平均值、汇总值、最小值和最大值仅对数值型字段生效。 |
比较方式 | 不同规则模板,可选择的比较方式不同。包括绝对值、上升、下降、大于、等于等多种方式,具体请以实际界面为准。
|
波动值比较 | 用于计算波动率。 您可根据波动率计算公式(波动率=(样本-基准值)/基准值)计算结果:
您可设置橙色阈值和红色阈值,对不同严重程度的问题进行监控。
|
启停状态 | 用于控制该规则是否在生产环境中运行。 重要 状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。 |
保留问题数据 | 当规则为启用状态时,在本条数据质量监控规则校验不通过的情况下,系统自动创建问题数据表存储质量规则校验过程中发现的问题数据。 重要
|
快捷添加
该方式提供了粗粒度的表和字段级常用规则,可帮助您快速配置一个质量监控规则使用。
参数 | 描述 |
规则名称 | 自定义规则名称。 |
规则字段 | 包括表级规则和字段级规则,字段级规则包括数值类型和非数值类型。 |
快捷规则 | 包括表行数大于0、表行数动态阈值、字段重复值等多种规则。表级规则和字段级规则可配置的快捷规则存在差异,具体请以实际界面为准。 重要 您需购买DataWorks企业版及以上版本,才可以选择表行数动态阈值规则。购买或升级DataWorks,详情请参见购买指引。 |
启停状态 | 用于控制该规则是否在生产环境中运行。 重要 状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。 |
创建自定义规则
如果模板规则不能满足您对分区表达式中数据质量的监控需求,您可通过创建自定义规则来满足个性化的监控需求。
创建自定义规则分为添加监控规则和快捷添加。
添加监控规则:提供细粒度的数据监控,可根据需要配置规则的强弱、阈值、比较方式等多种监控参数。若需细粒度的监控数据,可使用该方式。
快捷添加:提供粗粒度的表和字段级常用规则。若需快速体验质量监控规则功能,或对数据的监控粒度较粗,可使用该方式。
添加监控规则
添加监控规则时,规则字段支持选择表级规则、字段级规则和自定义SQL,不同类型规则的配置参数存在差异。
表级规则和字段级规则的主要配置参数如下。
参数
描述
规则名称
自定义的规则名称。
强弱
设置规则的强弱程度,不同程度对下游任务的影响不同。
强规则:红色异常报警并阻塞下游任务节点,橙色异常报警但不阻塞下游任务节点。
弱规则:红色异常报警不阻塞下游任务节点,橙色异常不报警也不阻塞下游任务节点。
规则字段
此处可选择表级规则或字段级规则。表级、字段级⾃定义规则⽀持根据业务属性⾃定义where过滤条件。
采样方式
支持count和count/table_count、sum等多种方式。表级、字段级规则可选择的采样方式不同,具体请以实际界面为准。
说明此处的count/table_count指的是根据配置的过滤条件过滤后的结果条数与当前分区的表总行数的比值。
过滤条件
输入过滤条件。例如,您需要查询业务日期下表的分区,则可设置过滤条件为pt=$[yyyymmdd-1]。
校验类型
支持数值型、波动率型和动态阈值型。开启动态阈值后,无需手动配置波动阈值或期望值,系统会根据智能算法,自动判断合理阈值,若发现数据异常,会立即触发报警或阻塞。
说明您需购买DataWorks企业版及以上版本,才可以选择动态阈值型。购买或升级DataWorks,详情请参见购买指引。
校验方式
进行表数据校验的方式。不同校验类型,支持选择的校验方式不同。具体请以实际界面为准。
比较方式
不同校验类型,支持选择的比较方式不同。包括绝对值、上升、下降、大于、等于等多种方式,具体请以实际界面为准。
数值型模板通常与固定值(即期望值)进行比较,故多采用大于、等于等比较方式。该类比较方式需设置期望值。
波动型模板通常是进行波动范围比较,故多采用绝对值、上升、下降等比较方式。该方式需设置波动值比较。
动态阈值型通过由系统自动提供合适的阈值,并与该阈值进行比较。该方式需设置样本参考量,样本参考量默认为15。
说明模型样本参考量是指使动态阈值算法模型生效的样本最小时间窗口范围,该时间窗口内允许少于10%的数据缺失。未达到样本参考量时不会报警,缺失数据会由算法自动补齐。
波动值比较
用于计算波动率。
您可根据波动率计算公式(波动率=(样本-基准值)/基准值)计算结果:
样本:当天采集的具体样本值。例如,对于SQL任务表行数,1天波动检测,则样本是当天分区的表行数。
基准值:历史样本的对比值。例如:
若规则是SQL任务表行数,1天波动检测,则基准值是前一天分区产生的表行数。
若规则是SQL任务表行数,7天平均值波动检测,则基准值是前7天的表行数据的平均值。
您可设置橙色阈值和红色阈值,对不同严重程度的问题进行监控。
场景一:校验值小于或等于橙色阈值,则返回正常。
场景二:校验值大于橙色阈值,小于或等于红色阈值,且规则为弱规则,则返回正常。
场景三:校验值大于橙色阈值,小于或等于红色阈值,且规则为强规则,则返回橙色报警,但任务不会被阻塞。
场景四:校验值大于红色阈值,且规则为弱规则,则返回红色报警,但任务不会被阻塞。
场景五:校验值大于红色阈值,且规则为强规则,则返回红色报警,且任务会被阻塞。
启停状态
用于控制该规则是否在生产环境中运行。
重要状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。
自定义SQL规则可根据需要自定义SQL逻辑,主要配置参数如下。
参数
描述
规则名称
自定义的规则名称。
强弱
设置规则的强弱程度,不同程度对下游任务的影响不同。
强规则:红色异常报警并阻塞下游任务节点,橙色异常报警但不阻塞下游任务节点。
弱规则:红色异常报警不阻塞下游任务节点,橙色异常不报警也不阻塞下游任务节点。
规则字段
选择自定义SQL,支持自定义SQL逻辑(单行单列输出)。
采样方式
仅支持自定义SQL。
Set Flag
输入SQL的前置set语句。
自定义SQL
输入完整的SQL语句,查询结果只能返回一行一列的值。
自定义SQL中,请使用中括号的形式匹配表的分区表达式。示例如下:
select count(*) from table_name where ds=$[yyyymmdd];
说明此处table_name代指当前正在配置监控规则的表名,您需要在实际配置中将其替换为当前实际操作的表名。
配置分区表达式,详情请参见创建分区表达式。
基于自定义SQL创建的数据质量规则校验的表分区由当前SQL条件决定,与上述步骤中的分区表达式配置无关。
校验类型
支持数值型、波动率型和动态阈值型。开启动态阈值后,无需手动配置波动阈值或期望值,系统会根据智能算法,自动判断合理阈值,若发现数据异常,会立即触发报警或阻塞。
说明您需购买DataWorks企业版及以上版本,才可以选择动态阈值型。购买或升级DataWorks,详情请参见购买指引。
校验方式
进行表数据校验的方式。不同校验类型,支持选择的校验方式不同。具体请以实际界面为准。
比较方式
不同校验类型,支持选择的比较方式不同。包括绝对值、上升、下降、大于、等于等多种方式,具体请以实际界面为准。
数值型模板通常与固定值(即期望值)进行比较,故多采用大于、等于等比较方式。该类比较方式需设置期望值。
波动型模板通常是进行波动范围比较,故多采用绝对值、上升、下降等比较方式。该方式需设置波动值比较。
动态阈值型通过由系统自动提供合适的阈值,并与该阈值进行比较。该方式需设置样本参考量,样本参考量默认为15。
说明模型样本参考量是指使动态阈值算法模型生效的样本最小时间窗口范围,该时间窗口内允许少于10%的数据缺失。未达到样本参考量时不会报警,缺失数据会由算法自动补齐。
波动值比较
用于计算波动率。
您可根据波动率计算公式(波动率=(样本-基准值)/基准值)计算结果:
样本:当天采集的具体样本值。例如,对于SQL任务表行数,1天波动检测,则样本是当天分区的表行数。
基准值:历史样本的对比值。例如:
若规则是SQL任务表行数,1天波动检测,则基准值是前一天分区产生的表行数。
若规则是SQL任务表行数,7天平均值波动检测,则基准值是前7天的表行数据的平均值。
您可设置橙色阈值和红色阈值,对不同严重程度的问题进行监控。
场景一:校验值小于或等于橙色阈值,则返回正常。
场景二:校验值大于橙色阈值,小于或等于红色阈值,且规则为弱规则,则返回正常。
场景三:校验值大于橙色阈值,小于或等于红色阈值,且规则为强规则,则返回橙色报警,但任务不会被阻塞。
场景四:校验值大于红色阈值,且规则为弱规则,则返回红色报警,但任务不会被阻塞。
场景五:校验值大于红色阈值,且规则为强规则,则返回红色报警,且任务会被阻塞。
启停状态
用于控制该规则是否在生产环境中运行。
重要状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。
快捷添加
该方式提供了粗粒度的字段级常用规则,可帮助您快速配置一个质量监控规则使用。
参数 | 描述 |
规则名称 | 自定义规则名称。 |
规则类型 | 仅支持多字段重复值。 |
规则字段 | 设置监控字段。支持选择多个字段。 |
启停状态 | 用于控制该规则是否在生产环境中运行。 重要 状态设置为停用时,规则将无法触发试跑,并且不会被关联的调度任务触发运行。 |
配置关联调度
如果您需要在生产链路上监控离线数据质量,需要将数据质量规则与产出表数据的调度节点进行关联:
产出表数据的调度节点必须发布后才可以关联调度。
关联前,请确保您在关联的工作空间中拥有空间管理员、开发或运维中至少一个角色。
数据质量的关联调度是将分区表达式和节点任务相关联,并且可关联多个节点任务。关联调度完成后,分区表达式下的数据质量监控规则将在关联的任务运行时自动触发检测。
数据质量的关联可以灵活配置,您关联的任务并非一定与您的表有关系。
若关联了多个任务节点,每个任务节点运行完,都会触发质量规则校验。
试跑规则
质量规则配置完成后,您可针对某规则通过选择调度时间进行试跑,确认当前试跑的分区数据是否符合预期。若不符合预期,请根据实际情况调整该规则。
进入规则详情页。
在规则列表页面,根据条件筛选目标规则,单击该规则即可进入规则详情页。
试跑规则。
在规则详情页,选择目标规则并设置调度时间,进行试跑。试跑完成后,根据界面指引进入任务查询,查看并处理试跑结果。步骤如下。
说明质量规则是基于表分区进行配置的,若某分区下存在多个规则,您也可选择批量试跑多个规则。
管理规则
规则创建完成后,您还可对已创建规则执行如下管理操作。
订阅规则
触发规则后默认仅通知规则创建者,若您想通知其他用户,则可在相应表的质量监控规则详情页,单击订阅管理添加需要通知的用户。
订阅方式包括邮件通知、邮件和短信通知、钉钉群机器人、钉钉群机器人@ALL、飞书群机器人、企业微信机器人和自定义Webhook。
添加钉钉群、飞书群和企业微信机器人获取Webhook地址后,复制Webhook地址至订阅管理中即可。
仅DataWorks企业版版本支持使用自定义Webhook方式,DataWorks推送自定义Webhook的报警信息的消息格式请参见:附录:Webhook消息格式。
查看分区操作日志
在相应表的质量监控规则详情页,单击分区操作日志,即可在操作日志对话框中查看历史操作的详细信息。操作内容显示当前分区表达式设置的所有规则。
查看上一次校验结果
在相应表的质量监控规则详情页,单击上一次校验结果,即可进入任务查询页面查看当前分区表达式下的运行结果情况和历史结果。
复制规则
在相应表的质量监控规则详情页,单击复制规则,即可根据需要选择复制当前规则至哪个分区表达式。同时,您还可选择是否同步规则的订阅人,或替换自定义SQL规则中的表名。
该操作会复制当前分区表达式下的所有规则到所选的目标分区表达式中。
后续步骤
若在指定业务时间内,您希望不符合质量校验规则的数据不阻塞任务运行,可以使用去噪管理功能,详情请参见配置数据质量规则去噪。