开发者学堂课程【DataWorks 使用教程:DataWorks 数据质量模块介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/107/detail/186
DataWorks 数据质量模块介绍
内容简介:
一.why 数据质量简介
二.数据质量监控过程
三.数据质量使用说明
四.最佳实践
五.FQA
一、Why数据质量简介
1970 年入网的淘宝用户:马总 6 岁操作 ARPANET 网?
.彩票订单为负值:淘宝从用户手中买彩票?
.一条物流单不同字段分别记录了北京和上海:中国直辖市合并?
.一个人旺旺登录日时长超过 24 小时:地球停转之日?
.交易基础表的金额字段从“元”改成“分”,数值扩大一百倍,导致下游阿里金融 的信贷授信模型给商家的授信金额同步扩大,风险资金敞口几个亿,风险贷款上百 万;
.马总曾经收到 6 个不同的 GMV 口径。
无处不在的数据质量问题:
业务系统脏数据,系统交互,数据订正,数仓 BUG,业务变化,数据库变更,数据定义问题。
影响:
影响上层决策应用,影响数据使用,产生附加费用,浪费时间。
Why 数据质量
数据质量,依托 DataWorks 平台,提供 全链路的数据质量方案,包括:数据探查、 数据对比,数据质量监控、SQLScan、智能 报警等能力;
数据质量监控,全程监控数据加工流水线,根据质量规则及时发现问题,通过强弱 报警通知开发同学及时处理问题。
数据探查、数据对比、SQLScan 主要针 对开发阶段,帮助开发人员快速了解数据特 点和关系,匹配校验规则,上线前阻止质量 问题的发生。即将上线,敬请期待。
二、监控过程
1.数据由任务节点写到表中,在各个表中可以配置表的规则,当任务节点产出到表里面的时候,就会调用我们的数据质量监控规则,然后在数据产生的表里面之后,然后运行规则,看表里面的数据是不是符合质量的预期,当数据不符合预期时,就会根据规则的配置,发出不同的报警,对于强规则我们还会阻塞下游的运行。
表级,字段级自定义规则则根据支持根据业务属性自定义where过滤条件。
自定义 SQL 支持完全自定义 SQL 逻辑(单行单列输出)
报警与阻塞:
1.强质量规则的红色报警阻塞下游任务节点,防止质量问题扩散/计算资源浪费
2.报警通过短信/邮件 /webhook 三种方式发送,webhook 遵循钉钉群机器人协议。
在检测到数据表的问题后,根据规则的橙色以及红色阀值,分别发出报警,如果规则仅仅是触发了,橙色阈值后,就会发出短信或者邮件的报警,并且还会通过webhook 协议向机器人发起通告,发送报警,如果是触发了红色阀值,除了刚才橙色阈值的渠道来发送报警后。
如果是强规则,就会阻塞任务下游节点的运行,主要是为了防止质量问题的扩散/避免下游计算节点有问题的计算资源浪费,除了离线质量流式质量也同样需要关注,实时数据和流式数据不一样,流式数据产生的速度不一样,一但产生就会被海量淹没在海洋中,排查困难,同时会实时反应在业务中,最终会影响离线数据质量。
流式数据质量同样需要关注
数据断流,十秒断流后进行监控
数据延迟,对管道中的业务时间自断,把系统的时钟进行比较,看差值是否过大。
自定义,通过对 SQL 进行监控,满足各种多变的业务场景。
Why数据质量
离线数据
.37 种模板规则,覆盖表级、字段级共 15 种采样方式,10 种校验方式
. 自定义规则,支持 SQL 方式自由定义
.强规则阻塞下游任务,弱规则提醒人工介入
实时数据
.数据断流、数据延迟两种监控模板
.自定义 Flink SQL,支持维表 join、多流 join 以及窗口函数等流计算特性。
质量告警
.支持短信、邮件告警到个人
.支持 Webhook 方式与第三方系统对接,可直接发送到钉钉群。
三.数据质量使用说明
1.选择一张 Maxcomputer 表
2.新建分区表达式
3.创建规则.强弱规则,强规则阻塞下游,弱规则则仅报警,比较方式
(1).数值型模板:固定值
波动型模板:绝对值/上升/下降比较方式
(2).数值型模板:=、>、<等
波动型模板:橙色阀值,红色阀值
模板类型
包括采样方式,校验方式,根据字段类型不同而不同
输入自定义 SQL
.只接收查询语句
.只能返回单行单列数据
.可使用分区表达式变量
.可关联其他表
.可使用 UDF
输入规则描述,将出现在报警信息中,
4.订阅信息
支持邮件,短信,钉钉群,三种不同方式,邮件短信发送人,钉钉群则是 webhook互接的方式来发送.
5.试跑
试跑的作用
.测试规则配置的正确性
.测试订阅发送渠道
.手动运行监控规则的一种手段
6.关键任务节点
方式一:数据质量界面关联
方式二:运维中心界面关联
7.任务查询和结果查看
触发规则的任务节点
规则执行时间
操作:详情:查看每一条规则的执行结果
规则:查看规则配置情况
日志:查看规则运行日志
数据分布:一键探查数据量,表行数
执行结果状态,如果是报警或阻塞要加倍注意.
实时流式数据
1.数据集成页面配置 Datahub topic
2.关联flink项目
3.配置规则
四、最佳实践
1.根据数据仓库或者集市的层次以及功能定位配置
入口层/数据引入层/基础层
.业务主外键是否唯一缺失
.周期性数据波动是否过大/特殊类(如日志等)
.无周期性则判断数据是否大于固定值
数据清洗层/整合加工层
增加一些对清洗逻辑的监控
对于整合的数据判断其数据唯一性、重复性
轻度/高度汇总层
.根据汇总逻辑做平衡值监控
维表层/事实表层
.主外键一致
.维度值增加/减少监控
出口层/应用层/报表层
.逻辑主键 。
多表之间的平衡关联。
特定业务逻辑监控 DataWorks mke data wors
2.最佳实践
常用规则
表级规则:
ODPS 表大小,1 天波动检测
ODPS 表大小,30 天波动检测
ODPS 表大小,7 天波动检测
SQL 任务表行数,1,7,30 天波动检测 使用较多,周期性检测
SQL 任务表行数,1 天波动检测 C 类使用较多,根据业务波动特性
SQL 任务表行数,30 天平均值波动检测
SQL 任务表行数,30 天波动检测
SQL 任务表行数,7 天平均值波动检测
SQL 任务表行数,7 天波动检测 B 类使用较多,根据业务波动特性
SQL 任务表行数,上 1 周期比较 B 类使用较多,根据业务波动特性 相比上一周期表大小不变。
3.最佳实践
常用规则
字段唯一值个数期望值校验如站点、渠道、类目等可以使用
字段唯一值,1,7,30 天波动检测
字段平均值,1,7,30 天波动检测 字段最大值,1,7,30 天波动检测。
字段最大值,上1周期比较 根据业务特性,如状态值,部署在最外层 字段最小值,1,7,30 天波动检测根据业务特性,如状态值,部署在最外层
字段最小值,上 1 周期比较 根据业务特性,部署在最外层
字段汇总值,1,7,30 天波动检测 B、C 类使用较多,如交易总量,flag 标签等 字段汇总值,上 1 周期比较 B、C 类使用较多,如交易总量,flag 标签等
字段空值个数使用较多,常与重复值个数联合使用作为主键监控 字段空值数/行数(空值率)
字段重复值个数使用较多,常与空值个数联合使用作为主键监控 字段重复值个数/总行数
离散值监控(分组个数) 使用较多,如男女等维度值监控
离散值监控(分组个数波动) 使用较多,如男女分别的数量值监控
离散值监控(状态值) 离散值监控(状态值及状态值个数波动)
4.最佳实践
关于规则类型和比较方式
强弱规则:脏数据不能流入下游则强,其他则弱,弱规则不会阻塞任务。
趋势:上升、下降、绝对值、不变,按业务需要设置
橙色阈值:强弱规则的橙色报警均不会阻塞下游,必须小于红色阀值,精确到百分比小数点后 两位
红色阈值:强规则的红色报警会触发阻塞,必须大于橙色阀值,精确到百分比小数点后两位 DataWorks mtedsta ook
五、FAQ
问:如何才能使用数据质量?
答:数据质量模块已经对 DataWorksV2.0 用户开放公测,上海、杭州、深圳、北京、英国 马来西亚 6 个 region 的新用户可以直接使用。老用户还未升级到DataWorks V2.0 的,可以进 入钉钉群[数加 -DataWorks 交流 0 群](群号为11718465)申请开通。
问:数据质量模块是否收费?
答:对公共云用户,目前处于公测免费阶段,但是质量规则的运行会带来额外计算引擎的费用 (离线规则使用 MaxCompute,实时规则使用 Flink)。
问:自定义规则使用怎样的 SQL 语法?
答:离线自定义规则使用 MaxCompute SQL,实时自定义规则使用 FlinkSQL。目前只接受 查询语句,并限制为单行单列输出。
问:收到了数据质量报警,怎样才能快速定位触发的业务流程节点?
答:在数据质量-任务查询界面,找到报警对应的节点 ID,至运维中心中查询即可。
问:我的任务节点和表处于不同的工作空间中,如何配置?
答:目前还不支持。研发小姐姐正在努力开发中,敬请期待。 DataWorks med1 UO
数据质量与智能监控一起使用,需要特别注意什么?
对离线数据来说,强弱规则运行的时机不同: 弱规则优先级较低,且与下游任务并发执行,基本不影响基线产出 强规则优先级高,会在下游任务运行前执行,计入基线运行时间。
强规则还可能阻塞下游任务,如果下游有基线,请为后面的同学负责。