DataWorks 数据质量介绍及实践 | 学习笔记

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 快速学习 DataWorks 数据质量介绍及实践,介绍了 DataWorks 数据质量介绍及实践系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【一站式大数据开发治理平台 DataWorks 初级课程DataWorks 数据质量介绍及实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/763/detail/13360


DataWorks 数据质量介绍及实践


内容介绍:

一、DataWorks 数据质量简介

二、数据质量使用说明

三、数据质量最佳实践


内容主要分为三部分:第一是在 DataWorks 数据质量模块的简单介绍;第二是数据质量模块的使用说明;第三是使用数据质量模块过程中的最佳实践。


一、DataWorks 数据质量简介

为什么要关注数据质量?简单罗列一些阿里巴巴淘宝网早期所遇到的数据质量问题。

1970年入网的淘宝用户:马总6岁操作 ARPANET 网?

彩票订单为负值:淘宝从用户手中买彩票?

一条物流单不同字段分别记录了北京和上海:中国直辖市合并?

一个人旺旺登录日时长超过24小时:地球停转之日?

交易基础表的金额字段从“元”改成“分”,数值扩大一百倍,导致下游阿里金融的信贷授信模型给商家的授信金额同步扩大,风险资金敞口几个亿,风险贷款上百万;

马总曾经收到6个不同的 GMV 口径

观察到共同点:都是因为数据质量很小的问题导致非常大的业务误差。在数据工程师看来很简单的问题,比如一张交易的基础表金额从元改到分,仅仅是数据表上非常简单的数据格式变更,但带来的后果是非常大的,导致整个下游的信贷模型口径变大,带来业务上的风险。

所以,我们会把数据质量作为数据开发和治理全生命过程中非常重要的一环,在DataWorks 整个产品的版图里,数据质量也是如此。

image.png

数据质量问题产生的原因有很多种,既有系统层面的问题,比如来自业务系统的脏数据;也来自业务系统和收藏平台对接过程中系统层面的不一致导致数据传输和转换过程中引入的误差;更可能是因为业务上的一些变化,比如前后端系统是业务系统和数仓平台对于某些数据字段定义上的不一致,业务的日期格式或者金额的格式;上一页的金额单位是元和分,对某个特定字段前后端的定义有些不一致并不会造成系统层面的错误,从技术层面是很难观察到数据值问题。

由于系统和业务双方所带来的一些数据质量问题后果是非常严重的,对于比较轻量级的数据质量问题影响数据加工列入的时间、最后数据产出的时效性,造成数据计算和存储成本上的浪费。

max compute、hive、holo gres 这些引擎中,计算存储是需要金钱的,如果产出数据质量问题的数据,本身是对成本的浪费,处于低层层级问题,这些有问题的数据流入到上层的应用中造成业务上的问题影响上层的决策,更加严重。

image.png

因此数据质量本身也是投资业务版图中非常重要的一环,是在数据治理版块处于核心。数据质量同时也需要依赖底层的统一的元数据服务和任务调度服务支撑功能。这一重点也会在后续的功能介绍中明显看到。

image.png

投资数据质量模块主要的特色有三方面:

第一方面:首先,它是数据开发和调度模块深度集成,这是和市面上其他的数据质量产品的不同,集成主要分为:首先它是全面支持 DataWorks 底层的离线数据计算存储引擎,比如 max computer、 EMR hive、 Hologres、 ADB-PG。

这些都被接入到数据质量的离线监控模块上;其次 DataWorks 数据质量规则是由调度系统来触发的,核心是能够在最佳的时间点来调度数据质量监控规则去扫描表,这样节省计算资源的同时也能及时发现数据质量问题;如果是强规则,还会及时去阻塞下游任务防止问题数据污染到下一个表上;

第二方面:37种内置模板能够快速的配置数据质量监控,不能覆盖的场景还可以用自定义的方式来适配更多的业务。

用内置的模板规则会有一种动态阈值的模式,不需要去设置具体的监控指标的阈值,这就解决日常的小纠结--在配置规则时,不知道阈值要设置成什么?这种问题就交给后台算法,让它来自动判断指标的异常点;使用自定义规则也有很方便的功能,把它沉淀成为模板,让别人或自己在其他表上再去使用,方便组织内部的数据质量规则标准化;

除了离线的数据质量监控之外,也支持实时的数据质量监控。基于阿里云大数据系列产品的实时数据通道 Datahub 以及实时数据加工引擎 Blink 能够去支持实时数据流监控,目前支持断流、延迟和自定义三种实时数据质量监控规则。

image.png

数据质量模块的主要功能架构分为离线和实时两部分,离线数据质量监控支持 max computer、 EMR hive、 Hologres、 ADB-PG 四种不同的引擎,支持内置的模板规则和自定义SQL规则,同时自定义规则还可以呈现出自定义规则模板。

所有的规则都支持四种不同的监控方式:绝对值监控、同比/环比监控(这样可以和上周期的业务进行比较)、波动率监控、动态阈值监控。实时这部分支持断流监控、延迟监控和自定义监控。所有的数据质量问题支持通过短信、邮件和钉钉群通知的方式发送。除了这三种不同的触达渠道之外,这些数据质量问题和指标都会汇总到自定义质量报表上通过邮件周期性的送达出来,网页端实时查看,能够非常直观的观察到目前数据质量的整体情况。最后,数据质量模块包括规则分区表达式、订阅人等等对象的增删改查,都是通过 open API 进行的。

数据质量规则绑定在调度的任务上。具体可以在这张图上看到

image.png

首先每条规则自然有张对应的表,规则是扫描表的关系。

除这层关系之外,其实每条规则需要绑定到具体的任务节点产出表的任务上,比如这张任务是由某一段 SQL 条本来写录的,可能每天或每小时都会通过任务节点把数据写入到表,会自动触发规则扫描该表,实际是扫描该表数据质量问题最佳时机,因为数据刚写入该表,如有问题第一时间就会被发现,很严重还有进一步措施。

image.png

任务节点扫描某一张表,同时产出一个橙色阈值或红色阈值,无论触发哪一种阈值都会引起短信、邮件、钉钉群通知报警;强规则并触发红色阈值同时阻塞到任务节点的下级节点,防止质量问题的扩散,也防止计算资源的浪费。这是数据质量离线监控的特色功能--把规则和任务节点绑定一起决定实时质量监控的时间点。

image.png

这是支持的37种不同的模板规则,可以看到有数值型和波动率两部分,数值型规则是对某个特定的指标本身来进行监控,比如表行数、表大小、字段积的最大值最小值;波动率规则和历史取值进行对比,在后台会维护历史指标的存储,方便大家根据特定指标的历史波动值来判断最新指标是否存在异常;自定义 SQL 方式定义数据质量规则与之相同,在离线数据质量监控的同时也支持实时数据质量监控的。

image.png

关心实时数据的质量是因为业务对数据的时效性要求越来越高,实时数仓理念深入人心,实时数据一旦出现数据问题,本身的排查、解决相比离线的数据质量困难,首先实时数据吞吐量非常大,一有问题会淹没在海量数据中,排查起来就很困难,根本不知道每秒上百条的数据究竟哪一秒哪一条数据有问题,所以需要有自动化系统监控;

其次实时的数据质量问题是直接会影响到在线的业务,因为离线数据可能会有一定的时间力度修复,实时数据有问题直接会体现到在线的业务上。对实时数据质量问题的敏感度其实是要比离线数据质量问题要高;实时数据质量最终会影响到离线数据质量的,一般来说,实时数据都会归档到离线数层中,实时数据的源头是有问题的,自然也会影响到离线数据质量。

在 DataWorks 的数据质量模块里支持三种不同的方式监控实时数据质量方面,有断流监控、延迟监控、自定义 Blink SQL 机构的方式定义业务层的数据质量的规则。

在后面也会详细讲到,断流和延迟的概念上是很清晰的,断流是指数据通道在一段时间内没有新数据进来,断流的阈值是可以设定的,可以是十秒钟、十分钟,力度都非常高;延迟是指数据流里时间戳的字段时间和系统时钟差值扩大,就认为最新的数据延迟太大,已经丧失实时系统时效性,本身会有数据延迟的问题。

image.png

自定义 SQL 规则方面比较灵活,引入一张维度表和实时数据做关联,也可以引入两条实时数据的链路进行双流或更多流的状态,其实是和实际的业务场景有关系的。


二、数据质量使用说明

image.png

投资数据质量模块简介(未覆盖全部的功能),下面会对数据质量模块的使用做较详细的说明。

首先离线数据质量校验使用很简单,都是在图形化的界面上,要选以 max computer的实时数据质量监控为例,同时还支持 EMR hive、 Hologres、 ADB-PG 四种离线的计算存储引擎。

以 max computer 的表为例,要选择 ods-user- info-d 这张表,要定很特殊的对象值叫做分区表达式,在离线系统中,数据会分次写到不同的分区中,分区大部分情况下是和业务日期相关联,最新的数据只会写到最新的分区,定义分区表达式的目的是为了限定质量问题扫描的范围,实际每天只要扫描最新的分区就够了。

最新的分区格式在不同的表上名称定义的方式是不同的。需要通过分区表达式定义最新的分区名称,定义的过程是很灵活的,有一套完整的变量体系,比如最基本的$再加上[],中间指定 YYYYMMDD 调度日期--离线规则被触发的那一刻所在的这个年月日。

image.png

组成这个字符串定分区名,质量规则会去扫描具体的分区;更常用的是第二条分区表达式的例子,就是 YYYYMMDD-1,因为通常第二天才会去处理第一天的业务,对应的一小时分区是以小时级的任务去写入的,会通过这种方式来定义一小时之前的分区名。这种小时级别的表一般都会有多重分区的体系,为了精确地判断数据质量问题,在多级分区表中,分区表达式只需要精确到最后一集的分区。不同级的分区名用斜杠来区分。

创建分区表达式后,可以在对应的分区表达式下创建质量规则。用过数据质量的同学应该对界面很熟悉,点击模板规则下的添加监控规则,可以很方便的添加内置模板规则。

image.png

这里有一些很详细的配置项,比如规则的强和弱,强规则是会阻塞下游的电路,弱规则仅仅把报警发送出来,还有动态阈值的配置。

在规则字段选项里选择是表级规则还是字段级规则。字段级规则可以精确选择是针对哪个字段的规则,这里系统会自动判断是字符串型的字段还是数值型的字段,给出可用模板,就在规则模板的选项中。

比较方式有个非常复杂的设定,固定值比较、波动率绝对值比较、波动率上升或下降比较。不同的规则和校验方式有不同的配置。

另一方面模板规则不符合要求,可以设置自定义规则,自定义规则使用起来很简单,在刚才创建规则的窗口里,选择自定义规则就可以在窗口里写入 SQL,SQL 本身会有一定的要求,符合要求的 SQL 都可以被纳入到自定义规则监控中。

image.png

着重强调两个功能:一是动态阈值,如果在配置规则的界面上动态阈值的选项选“是”,意味着要配置动态阈值方式规则,会发现下面的配置变得简单很多,不需要复杂的阈值设定,取而代之的是算法参考样本量的配置,只需要指定让系统去关注多少天之内的样本量,基于样本量通过一些平滑的算法判断最新的指标点是否在预期的区间范围内,在区间范围内认为是正常的指标项,在突破预测的上、下界认为质量问题存在,基于历史数据系统会自动判定一个上界和下界,最新数据落在上下界内,系统认为是被接受的,如果突破上下界,系统存在数据质量问题。

image.png

另一个着重强调,自定义模板是自定义规则的进阶用法,是通过一段 SQL 来进行复杂业务场景的校验,需要用自定义规则去校验的表比较多,配置起来工作量较大,也容易出现 SQL 代码管理起来很复杂的问题,或由于业务的变化 SQL 脚本本身需要修改,这就用到自定义规则模板库的功能,本质上把自定义规则固化成模板,在使用规则时就可以像使用内置模板规则一样。

image.png

在数据质量的界面上看到规则模板库,进入后会有模板库的目录数,可以像配置自定义 SQL 规则那样去配置模板,不相同的用${Table name}来指代表明,同理[]仍然用来指代分区表达式,和自定义 SQL 规则的用法是相同的,创建完自定义规则后,再使用模板规则时可以在规则来源中选择规则模板库,选择到对应的目录,再选择刚才所配置的模板就可看到配置的模板就显示在这里,这样方便规则代码统一管理。

内置模板规则、自定义模板规则或自定义 SQL 规则配置完成后,把扫描的结果通知出,需要配置订阅人,在 DataWorks 的界面上有订阅管理的按钮,点击按钮后去配置不同的订阅方式,可以看到短信、邮件或钉钉群的方式。

image.png

其次还有试跑功能,点击后就立刻运行刚才配置的规则,用来校验规则配置的正确性,同时也是一种规则校验的手段,可以通过手动试跑的方式来运行规则;

image.png

最后在数据质量的界面把规则绑定调度的任务上,在运维中心的界面也可绑定。把质量规则和调度节点绑定一起能够让两侧联动起来,从而联通数据开发和治理的流程,手动运行的、调度来触发的规则,任务调研的结果都可以在任务查询菜单里看到。

image.png

实时数据质量校验操作和离线数据质量规则操作非常相似。在配置规则的界面上选择datahub topic,系统会自动判断并配置实时数据值,关联 blink 项目就能把实时数据质量校验的任务运行在对应的 Project。配置一些规则,比如断流规则、延迟规则、自定义规则,按照图示的方式配置。

image.png

配置完成离线规则和实时规则后,希望周期性的收到质量报告,数据质量也提供数据质量报告的定义,只要在菜单中进入报告模板管理创建报告模板,定义报告里面要显示的内容,比如规则的配置情况、数据表和 datahub topic 的数量以及所配置规则的数量,从而计算出监控的覆盖度,还有规则运行情况、报警情况、断流情况、阻塞情况都可以在数据质量报表中体现出来。


三、数据质量最佳实践

针对数仓系统,质量规则的类型有很多,支持37种模板同时也支持自定义规则,什么表配置什么规则其实有不成文指南。

image.png

比如数据员刚刚把数据抽取到数仓入口层,通常会去检测主外键是否缺失、周期性数据量的波动是否过大,今天的分区数据量明显的比上周期的要小,或数据量突然变大,需要关注数据有重复导入的可能性。

在数据的清洗层和加工层判断数据的唯一性和重复性,比如做 join 或做分组时会导致重复数据。

在高度汇总的数仓层做平衡值监控。平衡值可能基于一些统计,比如求和、平均、或最大最小值,通过统计指标来判断高度汇总层在汇总数据过程中是否产生业务语义上的变形。

比如明细表的某些数值列的汇总值和汇总表的数对应列的汇总值是相同的。这种需要监控平衡值来确保加工过程中的逻辑不会造成业务语义上的行列。

同时,在维度表和实时表关注主外键的一致性,维度值的数量就是指离散值的数量,离线规则里也有对应的模板可用。

出口层(应用层、报表层)需要通过特殊的业务逻辑。这里就会用自定义SQL规则来定义特殊业务,发现有些规则用的多,经过统计表级的规则中表行数和表大小两种规则使用比较多,主要用来监控某些分区是否为空,会不会有突变数据猛增的情况,字段型规则所罗列的比较多,不同的数仓分层中所用的常用规则是一致的,比如字段为1值的个数,可以在维度表用到,监控维度数量是否有异常的变化、空值和重复值的个数,做主外键是否缺失监控。

这种规则用的比较多,关于规则的强弱需要合理选择。认为脏数据是比较关键的,不希望它到下游的表中,设置成强规则,其他的尽可能设置成弱。

关系到系统资源的成本,毕竟强规则用 max compute 的资源较多,并且会阻塞最终任务的产出,影响最终数据的时效性。

波动率的检测趋势有上升、下降和绝对值,可以根据业务的需要设置。橙色阈值是不会阻塞下游的任务。红色阈值会触发阻塞下游链路的动作,无论是橙色阈值还是红色阈值都要精确到百分比的小数点的后两位。

这里罗列一些经常会遇到的问题:

问:数据质量模块是否收费?

答:对公共云用户,按照质量规则实例运行数量计费,其中部分功能仅在 DataWorks 企业版中开启。

详见https://help.aliyun.com/document detail/118793.html

问:自定义规则使用怎样的 SQL 语法?

答:离线自定义规则使用 MaxComputeSQL,实时自定义规则使用 BlinkSQL。目前只接受查询语句,并限制为单行单列输出。

问:收到了数据质量报警,怎样才能快速定位触发的业务流程节点?

答:在数据质量-任务查询界面,找到报警对应的节点 ID,至运维中心中查询即可。

问:数据质量与智能监控一起使用,需要特别注意什么?

答:对离线数据来说,强弱规则运行的时机不同:

·弱规则优先级较低,且与下游任务并发执行,基本不影响基线产出

·强规则优先级高,会在下游任务运行前执行,计入基线运行时间

·强规则还可能阻塞下游任务,如果下游有基线,请为后面的同学负责

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
4月前
|
数据采集 存储 DataWorks
DataWorks产品使用合集之如何查看数据质量中心(DQC)的规则执行记录
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 DataWorks 监控
dataworks数据质量
dataworks数据质量
133 1
|
4月前
|
数据采集 SQL DataWorks
DataWorks产品使用合集之如何配置数据质量监控
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之如何配置周期任务(如工作流任务或调度任务)依赖于数据质量规则校验结果
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
85 0
|
6月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之数据质量检测出现校验异常一般是什么造成的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
31 0
|
6月前
|
数据采集 DataWorks 数据挖掘
DataWorks操作报错合集之出现报错数据质量校验不通过,但任务没有设置DQC校验,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
数据采集 SQL DataWorks
DataWorks产品使用合集之如何使用UDF(用户自定义函数)来提升数据质量
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
DataWorks Kubernetes 大数据
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
|
4月前
|
SQL DataWorks 安全
DataWorks产品使用合集之如何实现分钟级调度
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
运维 DataWorks 监控
DataWorks产品使用合集之如何自定义UDTF
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。

热门文章

最新文章

  • 1
    DataWorks操作报错合集之DataWorks任务异常 报错: GET_GROUP_SLOT_EXCEPTION 该怎么处理
    109
  • 2
    DataWorks操作报错合集之DataWorksUDF 报错:evaluate for user defined function xxx cannot be loaded from any resources,该怎么处理
    108
  • 3
    DataWorks操作报错合集之在DataWorks中,任务流在调度时间到达时停止运行,是什么原因导致的
    106
  • 4
    DataWorks操作报错合集之DataWorks ODPS数据同步后,timesramp遇到时区问题,解决方法是什么
    92
  • 5
    DataWorks操作报错合集之DataWorks配置参数在开发环境进行调度,参数解析不出来,收到了 "Table does not exist" 的错误,该怎么处理
    93
  • 6
    DataWorks操作报错合集之DataWorks中udf开发完后,本地和在MaxCompute的工作区可以执行函数查询,但是在datawork里报错FAILED: ODPS-0130071:[2,5],是什么原因
    103
  • 7
    DataWorks操作报错合集之DataWorks提交失败: 提交节点的源码内容到TSP(代码库)失败:"skynet_packageid is null,该怎么解决
    116
  • 8
    DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
    151
  • 9
    DataWorks操作报错合集之DataWorks集成实例绑定到同一个vpc下面,也添加了RDS的IP白名单报错:数据源配置有误,请检查,该怎么处理
    88
  • 10
    DataWorks操作报错合集之在 DataWorks 中运行了一个 Hologres 表的任务并完成了执行,但是在 Hologres 表中没有看到数据,该怎么解决
    126