DataWorks数据质量介绍及实践 | 《一站式大数据开发治理DataWorks使用宝典》

本文涉及的产品
大数据开发治理平台 DataWorks,不限时长
简介: 数据质量问题虽然从数据工程师的角度来看是个简单问题,但是从业务的角度来看是个很严重的问题。所以数据质量是数据开发和治理全生命周期中,非常重要的一个环节。在DataWorks产品版图里,数据质量也是非常重要的模块之一。

作者:DataWorks产品经理 陈振


一、DataWorks数据质量模块的介绍

在正式介绍数据质量模块之前,首先要了解我们为什么要关注数据质量。

幻灯片4.PNG

上图是阿里巴巴淘宝网早期遇到的一些数据质量问题,这些问题的共同点是,因为很小的数据质量问题导致业务上很大的误差。某些数据质量问题从数据工程师的角度来看很小,比如基础表中的金额单位由元变成了分,但是对业务的影响却是非常大的,会导致下游信贷模型口径变大,会给业务带来风险。

 

总而言之,数据质量问题虽然从数据工程师的角度来看是个简单问题,但是从业务的角度来看是个很严重的问题。所以数据质量是数据开发和治理全生命周期中,非常重要的一个环节。在DataWorks产品版图里,数据质量也是非常重要的模块之一。


数据质量问题产生的原因有很多,既有底层系统层面的问题,比如来自业务系统的脏数据,也有业务系统和数仓平台对接过程中系统层面不一致导致的数据传输和转换产生的问题,更有可能是由于业务变化而产生的,前后端业务系统中某些数据字段定义不一致造成的,比如日期格式、金额格式。业务不一致不一定报错,所以在技术层面就很难察觉了。

幻灯片5.PNG

数据质量问题带来的后果,如上图所示是非常严重的。对于一些轻量级的问题,可能仅仅影响到数据加工链路的时间浪费,影响数据产出的时效性,也会造成数据计算和存储成本的浪费。更严重的影响是,当有问题的数据流入上层应用,会影响业务决策。


数据质量在DataWorks业务版图中是重要的一环,是数据治理版块的核心部分。数据质量同时也依赖底层统一元数据服务和任务调度服务。


DataWorks数据质量模块的特色有三点:

第一点:与数据开发调度深度集成,这也是区分于市面上其他数据质量产品的不同点。

  • 全面支持DataWorks底层离线数据存储的引擎,比如MaxCompute、EMR Hive、MC-Hologres、ADB-PG等。
  • DataWorks数据质量规则由调度系统触发,好处是可以在最佳时间点调度数据质量监控规则去扫描表。在节省计算资源的同时可以及时发现问题。
  • 如果是强规则,还能自动阻塞下游任务运行,防止问题数据污染下游。

幻灯片9.PNG

第二点:便捷灵活的规则定义。

  • DataWorks数据质量模块,拥有37种内置模板规则和自定义规则。应用内置模板可以快速的配置数据监控,如果遇到内置模板不能覆盖的场景,也可以通过自定义的方式来适配更多业务。
  • 应用内置模板规则,有动态阈值模式,即不需要设置具体监控指标阈值,后台算法会自动判断异常值。
  • 自定义规则可以沉淀为模板,方便用户或其他用户下次使用,这就方便了组织内部数据质量的标准化。


第三点:支持实时数据监控。

  • 除了离线的数据质量监控,也支持实时数据质量监控。基于阿里云大数据系列产品实时数据通道Datahub和实时计算Flink的组合,能够支持实时数据流的监控。实时数据质量监控也支持Kafka。
  • 目前支持断流、延迟和自定义三种规则。
  • 支持维度表。


下图是数据质量模块的功能架构,主要分为离线和实时两部分。

幻灯片10.PNG

离线数据质量监控支持MaxCompute、EMR-Hive、Hologres和ADB-PG四种不同引擎。同时支持内置模板规则、自定义SQL规则和自定义模板规则。所有规则都支持四种不同的监控方式,包含绝对值监控、同比/环比监控(与上一周期业务比较)、波动率监控和动态阈值。数据质量问题报警都可以支持短信、邮件和钉钉群通知的方式实现,这些数据质量问题和指标都会汇总到一个自定义质量报表上,然后通过邮件周期性发出来,也可以通过网页端实时查看。


数据质量模块也支持Open API。Open API有一整套包括规则、分区表达、订阅人等对象的增删改查,都是可以通过Open API完成。


数据质量规则是绑定在调度任务上的。如何绑定呢?

幻灯片11.PNG

首先每一条规则都有对应的表要去扫描, 另外规则是需要绑定到具体的任务节上点的,这个任务节点推荐是产出表的任务节点。比如有个任务是由某段SQL脚本写入的,每天或每小时会通过这个任务节点把数据写入到表内,这种情况就建议把监控的规则绑定到任务上,这样每当任务执行完之后,就会自动的触发规则并扫描表,这个时机是最佳的,如果有问题第一时间就能发现。如果问题很严重,还会有进一步措施,如下图所示,当任务节点扫描出问题,会同时产出橙色或红色阈值,无论是哪一种阈值都会触发短信、邮件或钉钉的报警。如果是红色阈值并且是强规则,还会阻塞任务节点的下游节点,防止数据质量问题扩散,也避免了计算资源的浪费。

幻灯片12.PNG

这就是数据质量离线监控的特色功能,即把规则和任务节点绑定在一起,决定一个合适的质量监控时间点。


下图是数据质量监控所支持的37种不同模板规则,包含数值型和波动率型两种。其中数值型是指对某个特定指标本身来进行监控,比如表行数、字段的最大值最小值等。波动率型规则是指与历史趋势进行对比。后台会有历史指标的存储,方便用户根据历史波动值来判断新指标是否存在异常。

幻灯片13.PNG

同时,数据质量监控也支持自定义SQL方式来定义数据质量规则。这个定义出来的规则也支持数值型和波动率型的校验。


实时数据质量监控方面。由于业务对数据的时效性要求越来越高,实时数仓的理念越来越深入人心,实时数据一旦出现数据质量问题,相对离线数据质量问题它的排查和解决的困难度都大得多。

幻灯片15.PNG

实时数据的吞吐量很大,一旦有问题就会被淹没在海量的数据中,排查起来就很困难,所以需要一个自动化的系统来监控。另外,实时数据质量问题会直接影响在线业务。离线的数据可能有一定的缓冲时间去修复,而实时数据质量问题会直接体现到在线业务上,所以实时数据质量问题的敏感度要比离线数据质量要高。由于数据都会归档到离线的数据仓,所以实时数据质量问题最终也会影响离线数据的质量。


在DataWorks数据质量模块里,支持三种不同的方式来监控实时数据质量,包括断流监控、延迟监控和用自定义SQL的方式来定义业务层数据质量规则来监控。


断流和延迟监控。断流是指数据通道在一段时间内没有新数据进来,这个断流的阈值用户可以自己设定。延迟是指数据流中的时间戳字段和系统时钟的差值过大,就说明数据延迟了,并已经失去实时系统的时效性了。

幻灯片16.PNG

自定义SQL规则更灵活,可以引用一张维度表与实时数据关联,也可以引用两条实时数据链路对它进行双流或多流的Join。具体做法是和业务的实际场景有关联的。


二、数据质量使用说明

离线质量校验:离线质量校验是在图形化界面上的。

幻灯片18.PNG

以MaxCompute表数据监控为例,首先选择一张表,然后定义一个特殊对象值,叫分区表达式。在离线系统里,数据都会分次写到不同的分区中,大部分情况下分区与时间或业务日期有关联,因此最新的数据一般只会写到最新的分区中,定义分区表达式的目的就是为了限定质量监控范围,这样每次只扫描最新分区就可以了。不同的表最新的分区名称的定义方式不一样,所以需要分区表达式来定义最新的分区名称。这个定义是很灵活的,拥有完整的变量体系。

幻灯片19.PNG

最常用的是$[yyyymmdd-1],因为通常是第二天去处理前一天的全量业务数据,所以最新的业务日期的分区名一般是前一天的日期。这就是为什么要把日期减1了。小时任务则是$[hh24miss-1/24]的形式,表示前一小时。


创建完分区表达式后,就可以在对应的分区表达式下创建数据质量监控规则。

幻灯片20.PNG

点击模板规则下的添加监控规则,来添加一个内置模板规则。如上图所示,会有很详细的配置项。其中“强规则”会阻塞下游链路;“弱规则”仅仅会把报警发出,不阻塞下游;“动态阈值”是指是否由系统来判断异常指标。“规则字段”选项里,可以选择表级或字段级,字段级是可以精确到某个字段的规则。


“模板类型”包含采样方式、校验方式,可根据字段类型不同而不同。“比较方式1”和“比较方式2”是针对数值型模板和波动型模板的比较。


如果模板规则不符合用户要求,用户也可以去设置自定义规则。自定义规则使用起来很简单,在上述创建规则的窗口选择自定义规则,然后写下自己的SQL(符合一定规则的SQL可被纳入),并补充规则描述即可。

幻灯片21.PNG

这里强调两个离线质量校验的功能:

一个是动态阈值功能,在配置规则的界面如果把动态阈值选项勾选“是”,意味着用户需要配置动态阈值方式的规则,下面的配置选项就会简单很多,不需要阈值设定,而只需要做算法参考样本量的设定,即系统需要关注多少天之内的样本量,然后通过平滑的算法来判断指标点是否在预期的区间范围内。如果在预期范围内,就是正常值,反之就是问题值。幻灯片22.PNG

另外一个是自定义模板功能,是自定义规则的进阶用法。上面已经讲解了自定义规则,如果出现需要自定义规则去校验的表比较多,配置起来工作量很大的情况,自定义规则SQL脚本维护也比较困难。这就可以用到自定义模板库的功能。它本质上是可以把自定义规则固化成模板,这样在使用这个规则的时候就可以像使用内置模板一样简单了。

幻灯片23.PNG

操作方法是在数据质量界面里进入到规则模板库,找到模板库的目录树,然后可以像配置SQL规则一样去配置一个模板,唯一不同的是可以用${table_name}指代表名$[yyyymmdd-1]指代分区表达式。建好后,在使用这个模板规则的时候,可以在规则来源中选择规则模板库,然后选择配置好的模板。

幻灯片24.PNG

无论是自制模板规则还是自定义模板规则,都需要有一个方法把扫描的结果通知给用户,这就需要设定一个订阅人。设置订阅人的方法是在DataWorks界面的订阅管理里,配置不同的订阅方式,如短信、邮件或是钉钉。

幻灯片25.PNG

另外还有试跑功能,点击试跑后就可以立即运行刚刚设置的规则,以校验配置是否正确。

幻灯片26.PNG

在数据质量界面可以把规则绑定到一个调度任务上。绑定调度任务有两个入口,一个是数据质量界面,另外一个是运维中心界面。绑定成功后就能让两侧联动起来,从而连通数据开发和治理的流程。

幻灯片27.PNG

无论是手动运行(试跑)还是调度触发的规则,任务的校验结果都可以在任务查询菜单中看到。

幻灯片28.PNG


(一)实时质量校验

实时质量校验和离线质量校验,无论是从界面上的操作还是概念的定义上,都很相似。

幻灯片29.PNG

实时质量校验只需在配置规则界面上,选择一个Datahub Topic,系统就会自动判断用户需要配置实时质量校验,然后关联一个Flink项目,把实时质量校验任务运行到这个Flink项目上,然后再去配置一些规则,就完成了。


(二)自定义质量报告

在配置了实时和离线的规则后,用户可以周期性的收到数据质量报告。设置这个质量报告只需要在菜单中进入报告模板管理,然后创建一个报告模板,创建时可以设定报告中显示的内容。

幻灯片30.PNG可显示的内容如下图所示,用户可以自主选择。

幻灯片31.PNG


三、数据质量最佳实践

首先来了解下数仓系统的数据质量规则该如何配置。因为质量规则类型很多,内置模板多,同时也支持自定义配置规则,那么该如何选择呢?

幻灯片33.PNG

通常来讲,在数仓入口层,即数据引入层或基础层,一般会检测主外键是否缺失,周期性数据量波动是否过大,无周期性则判断数据是否大于固定值,数据是否有重复导入问题。


在数据清洗层和加工层,一般会增加对清洗逻辑的监控,对数据的重复性和唯一性进行监控。比如在Join或者分组的时候出现重复数据的可能性。


在高度/轻度汇总层,对汇总逻辑进行平衡值监控,基于统计,比如求和、求平均、最大最小值等指标在汇总时是否产生了一些业务语义的变形(比如明细表某些数值列的求和值一定要和汇总表上对应列的求和值一致),监控这些平衡值以确保加工过程中汇总值不会出现业务语义上的形变。


维度表和事实表,需要关注主外键的一致性和维度值(离散值)数量监控。


在出口层、应用层和报表层,需要通过特殊的业务逻辑,监控多表之间的平衡关联和特定业务的逻辑监控,可能就会用到自定义SQL规则。


总而言之,有些规则应用会更广泛,在表级规则中,表行数和表大小用的比较多。监测某些分区是否为空,或者数据猛增的情况。

幻灯片34.PNG

在字段型规则中,下图中展示的是用得比较多的。

幻灯片35.PNG

需要用户合理的选择规则的强弱性。针对比较关键的脏数据,需要控制不要流入到下游表中,就需要强规则;其他情况基本上是设置成弱规则。波动率的趋势有上升、下降和绝对值等,用户可以根据业务需要设置。

幻灯片36.PNG

橙色阈值不会阻塞下游任务,红色阈值的强规则才会触发阻塞下游链路任务。无论是橙色还是红色阈值,都要精确到百分比小数点后两位。


最后是一些常见问题:


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

答:对公共云用户,按照质量规则实例运行数量计费,其中部分功能仅在DataWorks企业版中开启。详见https://help.aliyun.com/document_detail/118793.html


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

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


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

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


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

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

  • 弱规则优先级较低,且与下游任务并发执行,基本不影响基线产出。
  • 强规则优先级高,会在下游任务运行前执行,计入基线运行时间。
  • 强规则还可能阻塞下游任务,如果下游有基线,请为后面的同学负责。


动态阈值和自定义数据质量报告以及规则模板库等功能需要企业版及以上才能使用。


离线自定义规则使用对应引擎的SQL语法,Hologres使用PostgreSQL,EMR使用Hive SQL,实时使用Flink SQL。


运维中心智能监控的基线功能是监控任务时效性的,而数据质量的强规则会在下游任务运行前执行,触发强规则报警还会阻塞下游,都会影响任务时效性。如果下游有基线,需慎用。


数据质量介绍及实践请参考:https://developer.aliyun.com/learning/course/81/detail/1233


DataWorks官网:https://www.aliyun.com/product/bigdata/ide

大数据&AI体验馆:https://workbench.data.aliyun.com/experience.htm


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
12天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
3天前
|
存储 弹性计算 大数据
【阿里云弹性计算】阿里云ECS在大数据处理中的应用:高效存储与计算实践
【5月更文挑战第23天】阿里云ECS在大数据处理中发挥关键作用,提供多样化实例规格适应不同需求,尤其大数据型实例适合离线计算。通过集成分布式文件系统如OSS,实现大规模存储,而本地存储优化提升I/O性能。弹性扩容和计算优化实例确保高效运行,案例显示使用ECS能提升处理速度并降低成本。结合阿里云服务,ECS构建起强大的数据处理生态,推动企业创新和数字化转型。
12 0
|
12天前
|
分布式计算 数据可视化 Hadoop
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
|
12天前
|
分布式计算 Java Hadoop
大数据实战——WordCount案例实践
大数据实战——WordCount案例实践
|
12天前
|
数据采集 供应链 安全
利用大数据优化业务流程:策略与实践
【5月更文挑战第11天】本文探讨了利用大数据优化业务流程的策略与实践,包括明确业务目标、构建大数据平台、数据采集整合、分析挖掘及流程优化。通过实例展示了电商和制造企业如何利用大数据改进库存管理和生产流程,提高效率与客户满意度。随着大数据技术进步,其在业务流程优化中的应用将更加广泛和深入,企业需积极采纳以适应市场和客户需求。
|
12天前
|
分布式计算 DataWorks Oracle
DataWorks操作报错合集之DataWorks ODPS数据同步后,timesramp遇到时区问题,解决方法是什么
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
33 0
|
12天前
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之DataWorks中udf开发完后,本地和在MaxCompute的工作区可以执行函数查询,但是在datawork里报错FAILED: ODPS-0130071:[2,5],是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
29 0
|
12天前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
27 0
|
12天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks数据集成中,但是预览ODPS源数据库为空,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
32 0
|
12天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示”,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
40 0

热门文章

最新文章

相关产品

  • 大数据开发治理平台 DataWorks