基于MaxCompute的数仓数据质量管理

声明

本文中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导。

参考文献

《大数据之路——阿里巴巴大数据实践》——阿里巴巴数据技术及产品部 著。

背景及目的

数据对一个企业来说已经是一项重要的资产,既然是资产,肯定需要管理。随着业务的增加,数据的应用越来越多,企业在创建的数仓过程中对数据的管理也提出了更高的要求,而数据质量也是数仓建设过程不容忽视的环节。本文针对MaxCompute数仓建设过程中如何做数据质量给出规范建议,为实际数据治理提供依据及指导。

数据质量保障原则

评估数据质量的好坏不同行业甚至不同企业有不同标准,在此我们主要从四个方面进行评估,即完整性、准确性、一致性和及时性。

  • 完整性。

    完整性是指数据的记录和信息是否完整,是否存在缺失情况。数据缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成统计结果不准确,可以说,完整性是数据质量最基础的保障。如某个相对稳定的业务数据量每天的都有100万条记录,某天突然下降1万条,那么可能就是记录缺失。而对于记录中某个字段信息缺失,如某科高考成绩表中一个考卷分数要对应一个准考证号,这个字段的空值数就该为0,一旦大于0,说明该信息缺失了。
    
  • 准确性。

    准确性是指数据中记录的信息和数据是否准确,是否存在异常或者错误的信息。比如成绩单中分数出现负数,比如订单没有买家信息等,这些都是有问题的。确保记录的准确性也是抱着数据质量必不可少的一个原则。
    
  • 一致性。

    一致性一般体现在跨度很大的数据仓库体现中。 比如公司中有很多业务数仓分支,对于同一份数据必须保证一致性。例如用户ID,从在线业务库加工到数据仓库,再到各个数据应用节点,必须都是同一种类型、长度保持一致。因此在《MaxCompute数仓建设规范指南》中有了“公共层”的加工,确保数据的一致性。
    
  • 及时性。

    保障数据的及时产出,体现数据的价值。如决策的分析师一般都希望当天可以看到前一天的数据而不是要等三五天才能看到某一个数据分析结果,否则就失去了数据及时性的价值,使得数据分析工作变得毫无意义。
    

数据质量管理流程

要做数据质量管理,制定满足以上数据质量原则集基础上的质量管理规范,需要考虑几方面:

  • 什么数据需要做质量管理。
  • 什么环节进行数据质量管理。
  • 数据质量管理具体怎么做。

数据质量定义

定义哪些数据需要做质量管理一般可以通过数据资产等级划分和元数据的应用链路分析得出。根据应用的影响程度,确定数据资产等级;根据数据链路血缘,将数据资产等级上推至各数据生产加工的各个环节,确定链路上所涉及的数据的资产等级和在各个加工环节上根据资产等级的不同所采取的不同处理方式。

数据资产等级定义

对于数据的资产等级,在质量管理方向,可以从数据质量“不满足四个原则”情况下对业务的影响性质,比如可以划分为5个等级的性质,即毁灭性质、全局性质、局部性质、一般性质、未知性质,不同性质的重要性一次降低,具体定义如下:

  • 毁灭性质,即数据一旦出错,将会引起重大资产损失,面临重大收益损失等。
  • 全局性质,即数据直接或间接用于企业级业务和效果评估、重要决策等。
  • 局部性质,即数据直接或间接用于某些业务线的运营、报告等,若出现问题会给业务线造成影响或者造成工作效率损失。
  • 一般性质,即数据主要用于日常数据分析,出现问题带来的影响极小。
  • 未知性质,即无法明确数据的应用场景。

如table的label等级,资产等级可以用Asset进行标记:毁灭性质-A1,全局性质-A2,局部性质-A3,一般性质-A4,未知性质-Ax。重要程度为:A1>A2>A3>A4>Ax。若一份数据出现在多个应用场景汇总则遵循就高原则。

数据资产等级落地方法

定义划分好数据资产等级后,接下来就考虑怎么落地,对数仓中庞大的数据量进行资产等级打标。可以从数据流转链路着手。

MaxCompute进行数据加工基本基本流程:数据从业务系统上产生,通过同步工具(DataWorks的数据集成或阿里云DTS)进入数据数仓系统(MaxCompute),数据在数仓中进行清洗、加工、整合、算法、模型等一系列运算后,再通过同步工具输出到数据产品中进行消费。整个流程数据都是以存放在表的形式体现,流转链路大致如下图:

从数据流转链路上,整理哪些表是被哪些应用业务产品消费,通过给这些应用业务产品划分数据资产等级,再结合数据的上下游血缘,将整个链路打上某一类资产等级的标签。如,一个A2等级的的数据应用产品,对应导入这个数据产品的table即数仓(MaxCompute)的导出表Table1、Table2、Table3,几个表都打上A2-xxx数据产品标记,根据血缘往上追溯,将这几个表的上有都打上A2的标记,一直标记到源数据业务系统。

通过如上方式完成数据资产等级的确认,给不同的数据定义不同的重要程度。

知道了数据的重要等级针对不同的等级,采取不同的保障措施,接下来我们介绍在基于MaxCompute的数据仓库中针对不同等级的数据的保障方法。

数据加工过程卡点校验

在线系统卡点校验

在线系统数据加工过程卡点校验,主要是指在业务系统的数据生成过程中进行的卡点校验。在线业务系统产生的数据也是数据仓库的数据来源,然而在线业务系统普遍都是复杂多变,且每次变更不可避免会带来数据的变化,数仓需要适应多变的业务发展,及时做到数据的准确性。因此,在线业务的变更如何高效的通知到基于MaxCompute的离线数据仓库,也是需要考虑的问题。这里我们介绍两个方法拱参考:工具和人员双管齐下。纪要在工具上自动捕捉每一次业务的变化,同时也要求开发人员在意识上自动进行业务变更通知。

工具——发布平台。在业务进行重大变更时,订阅这个发布过程,通知到离线开发人员,使其知晓此次变更内容。当业务系统足够繁杂,日常发布变更频繁的情况下,若每次变更都通知离线业务,势必会造成不必要的浪费,同时也影响业务迭代效率。此时,可以通过数据资产等级的标识,对业务进行打标后,针对高等级的数据资产,整理出什么变更会影响数据的加工,如相关财务报表,如果业务系统的改造影响到财务报表的计算,使得约定好的计算口径被业务系统发布变更修改了,这种情况必须要告知离线业务,而离线开发人员也必须主动关注这类发布变更通知。

注意:这里指的发布平台非阿里云提供发布平台,只是一种统称,指各个企业自己在线业务的相关发布平台。

工具——数据库的变化感知。随着业务的发展,业务数据库(MaxCompute数仓的数据源)不可避免会出现数据库扩容或者DDL变更,这些变更都要主动通知到离线开发人员。基于MaxCompute的数据仓库在进行离线数据抽取时,通过DataWorks的数据集成工具,可能会限制某个业务数据库表,如果该数据库表发生扩容或者迁移等,数据集成工具感知不到,会可能导致数据抽取错漏,而一旦错漏,会影响下游一系列依赖该表的应用,因此建议业务数据库也需要有库表变更通知。

工具只是一种辅助手段,操作工具的人员才是核心。数据资产等级的上下游打通,同样也将这个过程给到在线开发人员,使其知晓哪些是重要的核心数据资产,提高在线开发人员的数据风险意识。通过培训等方式将离线数据的诉求、离线数据的加工过程、数据产品的应用方式告诉在线业务开发人员,让其了解数据的重要性,了解数据的价值,同时也告知出错后果。让在线开发人员在完成业务目标时,也要考虑数据的目标,做到业务端和数据端一致。

离线系统卡点校验

首先我们再次认识MaxCompute进行数据加工的基本流程:数据从业务系统上产生,通过同步工具(DataWorks的数据集成或阿里云DTS)进入数仓系统(MaxCompute),数据在数仓中进行清洗、加工、整合、算法、模型等一系列运算后,再通过同步工具输出到数据产品中进行消费。

整个流程中,有了数据加工,才有了数据仓库模型和数据仓库代码的建设,如何保障数据加工过程中的质量是离线数据仓库保障数据质量的一个重要环节。

MaxCompute进行数据加工,可以通过DataWorks、也可以通过MaxCompute studio、或者直接通过MaxCompute SDK提交各种任务进行加工。无论用什么工具,都会经历代码开发->测试、发布->运维、变更 的过程,可以对这个过程每个环节进行卡点校验。

  • 代码提交的卡点校验。即在sql提交前进行相关规则校验。这个校验目前公共云没有直接可用的工具辅助,有能力的用户可以自己开发相关的工具。规则分类如:

    • 代码规范类规则,如表命名规范、生命周期设置、表注释等。
    • 代码质量类规则,如分母为0提醒、NULL值参与计算影响结果提醒、插入字段顺序错误等。
    • 代码性能类规则,如分区裁剪失效、扫描大表提醒、重复计算检测等。
  • 任务发布上线时的卡点校验。为了保障线上数据的准确性,每一次变更都需要测试后再发布到线上生产环境,且生产环境测试通过后才算发布成功。
  • 任务变更或者数据重跑,在离线数据加工过程中不可避免都会出现的操作。针对这个操作,在进行更新前,需要通知下游,将变更原因、变更逻辑、变更时间等信息表明,下游对此次变更没有异议后再按照约定时间执行发布变更,将变更对下游的影响降到最低。

数据风险点监控

前一章节主要介绍通过数据加工过程的卡点校验保障在线数据和离线数据的一致性问题,本章节主要通过对数据风险点的监控来介绍如何保障数据的准确性。

在线数据风险点监控

在线业务系统的数据生成过程需要保证数据质量,主要根据业务规则对数据进行监控。MaxCompute本身没有配套的工具,需用户自己实现,在此只能给出一些建议拱参考。

如针对数据库表的记录进行规则校验,制定一些监控规则,在业务系统中,每个业务过程进行数据落库时对数据进行校验。监控规则如交易系统中,订单拍下时间、订单完结时间、订单支付金额、订单状态流转都配置校验规则,订单拍下时间不会大于当天时间,也不会小于业务系统上线时间,一旦出现异常校验就不通过。当业务繁杂且规则繁多,规则配置等运行成本高时,同样根据数据资产等级进行监控。

离线数据风险点监控

本小节将介绍基于MaxCompute的数据仓库建设过程中离线数据的风险点监控,主要报对数据准确性和数据产出及时性的监控。

数据准确性

数据准确性是数据质量的关键,因此数据准确成为数据直连的重中之重,是所有离线系统加工时的第一保障要素,在此我们主要介绍通过DataWorks的数据质量工具——DQC来保障MaxCompute离线数据的准确性。

注意,要用DQC,必须是使用DataWorks进行任务调度执行。

我们先来认识DQC工具架构:DQC以数据集(DataSet)为监控对象,当离线MaxCompute数据发生变化时,DQC会对数据进行校验,并阻塞生产链路,以避免问题数据污染扩散。同时,DQC提供了历史校验结果的管理,以便对数据质量分析和定级。

由上图我们看出DQC主要是通过配置数据质量校验规则,自动在数据处理过程中进行数据质量监控。DQC能监控数据质量并报警,本身不对数据产出进行处理,需要报警接收人判断并决定如何处理。

DQC数据监控规则有强规则和弱规则之分。强规则,一旦触发报警就会阻断任务的执行(将任务置为失败状态,使下游任务不会被触发执行);弱规则,只告警不会阻断任务的执行。DQC根据阿里内部的经验,提供了一些常用的规则模板,包括:表行数较N天前波动率、表空间大小较N天前波动率、字段最大/最小/平均值相比N天前波动率、字段空值/唯一个数等等,更多请参考DataWorks用户手册中数据质量模块介绍。

DQC的工作流程如下图所示:

由此看出DQC的检查其实也是运行SQL任务,只是这个任务是嵌套在主任务中,若检查的太多也会影响整体的任务执行性能,因此哪些数据需要配置DQC规则,应该配置什么规则,也要根据数据资产等级来确定。如A1、A2类数据监控率要达到90%以上,规则类需要3种以上,而不重要的数据资产不做强要求。

类似的规则都是有离线开发人员进行配置来确保数据准确性,当然不同的业务会有业务规则的约束,这些规则来源于数据产品或者消费的业务需求,有消费节点进行配置,然后上推到离线系统的起点进行监控,做到规则影响最小化。

数据的及时性

在确保数据准确性的前提下,需要进一步让数据能够及时的提供服务,否则数据的价值将大幅降低,甚至无价值,所以确保数据及时性也是保障数据质量重中之重的一环。

基于MaxCompute的离线任务,如常见的以天作为时间间隔,对于天任务,一些重要的业务会对数据产出有时间要求,比如一些决策报表要求9:00或更早必须产出。为确保数据完整性,天任务一般都是0点开始执行,计算刚过去的一天的数据,这些任务大多在夜里运行,要确保数据按时产出,需要考虑任务的优先执行(当Project里任务很多而资源有限的时候不得不考虑)和任务执行失败或时长过长时的告警问题。这里说的重要业务的“重要性”同样是前面所说的数据资产等级的划分,等级越高保障优先级越高。

  • 任务优先级。MaxCompute平台上任务优先级都是一样,无法配置。因此要对MaxCompute的任务实现“优先级”功能,只能从调度平台入手,优先调度下发重要的任务。
    DataWorks平台的调度任务,当对应的Project是使用预付费资源(预购固定的计算资源仅供当前项目使用)时,可以通过“智能监控”工具进行优先级设置。DataWorks的调度是一个树形结构,当配置了叶子节点的优先级,这个优先级会传递到所有的上游节点,而叶子节点往往就是服务业务的消费节点。因此在优先级的设置上,先确定业务的资产等级,等级越高的业务对应的消费节点优先级配置越高,优先调度从而优先占用计算资源,确保高等级业务准时产出。

    当DataWorks的节点任务所属的Project使用的是MaxCompute的后付费资源(计算按量付费,无固定资源使用),智能监控配置的优先级无效,因此,需要评估是否要购买预付费资源,同时对任务进行优化,减少不必要的资源浪费,力争在有限的资源下更高效的完成计算。

  • 任务报警。任务报警和优先级类似,通过DataWorks的“智能监控”工具进行配置,只需要配置叶子节点即可向上游传递。任务执行过程中出错或者可能出现延迟都是不可避免的,为了保障最重要数据(资产等级高)产出,我们需要“出错”立即处理、“可能”延迟必须知晓并介入。
  • DataWorks—智能监控。MaxCompute的离线任务,通过DataWorks进行离线任务调度时,DataWorks提供智能监控工具,对调度任务进行监控告警。
    智能监控是DataWorks任务运行的监控及分析系统。根据监控规则和任务运行情况,智能监控决策是否报警、何时报警、如何报警以及给谁报警。智能监控会自动选择最合理的报警时间,报警方式以及报警对象。
    智能监控旨在:

    • 降低您的配置成本。
    • 杜绝无效报警。

自动覆盖所有重要任务(数量已经多到您自己无法梳理)。

数据质量衡量

前面章节给出了保障基于MaxCompute的数据仓库数据质量的方案,但是这些方案是否真的合适,或者哪些点需要改进,这些需制定一套指标进行度量。
比如:频繁的接到DataWorks的智能监控发出的告警;每一个数据质量事件发生,必须分析有原因、处理过程、后续同类事件预防方案;严重的数据质量事件升级为故障,并对故障进行定义、等级划分、处理、review。

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP应用加速 – DCDN迈入全栈新篇章

4月11日,第七届"亚太内容分发大会"暨CDN峰会国际论坛中,阿里云资深技术专家姚伟斌发布了DCDN子产品IP应用加速(IPA)。IPA是基于阿里云CDN本身的资源优化,对传输层(TCP&UDP)协议进…

十年磨一剑,王坚自研的MaxCompute如何解决世界级算力难题

大数据时代,随着企业数据规模的急剧增长,传统软件已无法承载,这也推动了大数据技术的发展,Google、AWS、微软等硅谷巨头纷纷投入大数据技术的研发;而在国内,王坚也在十年前带领阿里云团队研发MaxCompute&am…

matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)

前记:听一首《不想病》,歌词唱开头:做什么都不对,说什么都浪费,想什么我都可悲....;感觉就是不一样,好歌!哎,,,回到正题。好多事要去做,还得挤时间…

贾扬清:我对人工智能方向的一点浅见

阿里妹导读:作为 AI 大神,贾扬清让人印象深刻的可能是他写的AI框架Caffe ,那已经是六年前的事了。经过多年的沉淀,成为“阿里新人”的他,对人工智能又有何看法?最近,贾扬清在阿里内部分享了他的…

Node.js 应用故障排查手册 —— 类死循环导致进程阻塞

类死循环导致进程阻塞 楔子 在实践篇一中我们看到了两个表象都是和 CPU 相关的生产问题,它们基本也是我们在线上可能遇到的这一类问题的典型案例,而实际上这两个案例也存在一个共同点:我们可以通过 Node.js 性能平台 导出进程对应的 CPU Pro…

如何使用5个Python库管理大数据?

来源 | medium编译 | 武明利责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)如今,Python真是无处不在。尽管许多看门人争辩说,如果他们不使用比Python更难的语言编写代码,那么一个人是否真是软件开发人员&…

如何把创建ECS(CreateInstance)作为触发器来触发函数计算

问题描述 函数计算虽然不支持直接集成到ECS的管控事件上,但是函数计算本身是支持日志服务作为触发器的。即可以配置日志服务中logstore里的增强日志作为触发器来触发函数计算服务中的函数,同时可以传递project 和 logstore的name以及beginCursor/endCur…

ORACLE添加字段、删除字段

文章目录1. 删除表2. 创建表3. 添加字段4. 删除指定字段5. 修改指定字段长度1. 删除表 DROP TABLE SYS_JOB;2. 创建表 -- CREATE TABLE CREATE TABLE SYS_JOB (JOB_ID NUMBER(30) NOT NULL,JOB_NAME VARCHAR2(30) NOT NULL ); ALTER TABLE SYS_JOB ADD CONSTRA…

像数据科学家一样思考:12步指南(中)

像数据科学家一样思考:12步指南(上)《像数据科学家一样思考》 7-工程产品 下一步是建立统计软件。如果统计是分析和从数据中得出结论的框架,那么软件就是将这个框架付诸行动的工具。数据科学家必须为任何项目做出许多软件选择。如…

2020云计算,是四强争霸还是赢家通吃?

来源 | 架构师技术联盟责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)近日,谷歌母公司Alphabet首次公布了谷歌云计算业务的数据,这一举动将云计算行业重新推到了聚光灯下。众所周知,全球云市场竞争激烈&…

加载程序中数据库账号密码加密策略wallet_04

文章目录1. 切换到oracle用户2. 创建wallet目录3. 创建wallet 账户4. 查看创建的wallet5. 创建wallet目录6. 查看证书7. 把证书拷贝到客户端8. 在客户端的sqlnet.ora里添加9. 客户端的tnsnames.ora10. 测试登陆11. oracle环境变量oracle服务端创建wallet 1. 切换到oracle用户 …

利用丁香园数据生成疫情分布地图(R语言)| 博文精选

来源 | CSDN 博客作者 | 万里写入胸怀间责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)疫情牵动大家,除了做好分内工作,管好自己不给社会添乱,也就是只能持续关注疫情了。现在各大门户平台都上线了疫情实时地…

php连接数据库性能测试,无需安装配置,多操作系统支持数据库及性能测试

iBoxDB是一个NoSQL数据库, 有SQLite的特性,但拥有更强大的Replication功能,支持更多的数据类型,自动完成ORMSQLite是全球知名度Top 10的数据库之一, 在文章 中对 SQLite 与 MySQL进行了一个事务中1万次插入测试, 测试的结果是"sqlite3用时仅0.4s,mysql用时2.2s"iBoxD…

ORACLE 添加和查看注释

文章目录一、表二、字段一、表 #1.给表加注释 COMMENT ON TABLE SYS_JOB IS 任务调度表;#2.查看表的COMMENT SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAMETABLENAME; 例如: SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAMESYS_JOB;二、字段 # 1.给字段加…

一次开发、多端分发,阿里巴巴发布AliOS车载小程序

4月16日上海国际车展首日,阿里巴巴小程序有了新动态:正在研发基于AliOS的车载小程序。 AliOS展出车载小程序、AI HUD、AI驾驶舱等最新技术 作为阿里巴巴小程序在车载场景的重要延伸,AliOS车载小程序和支付宝、高德等小程序一样,将…

基于TableStore的海量气象格点数据解决方案实战

前言 气象数据是一类典型的大数据,具有数据量大、时效性高、数据种类丰富等特点。气象数据中大量的数据是时空数据,记录了时间和空间范围内各个点的各个物理量的观测量或者模拟量,每天产生的数据量常在几十TB到上百TB的规模,且在…

腾讯会议扩容背后:100万核计算资源全由自研服务器星星海支撑

疫情期间,远程会议及协同办公需求暴增。从1月29日开始到2月6日,腾讯会议每天都在进行资源扩容,日均扩容云主机接近1.5万台,8天总共扩容超过10万台云主机,共涉及超百万核的计算资源投入。 值得一提的是,腾讯…

实时计算无线数据分析

本文为您介绍实时计算在无线数据分析中的应用。阿里云实时计算可以为无线App的数据分析场景实时化助力,帮助您做到实时化分析手机AP的各项指标,包括App版本分布情况、Crash检测和等。 阿里云移动数据分析 (Mobile Analytics,下面简称MAN) 是…

对话阿里云Alex Chen:下一代存储应如何面对云转型?

数字经济"乘云而上"。 十年前,阿里云开始自主研发云计算操作系统飞天之路,开启了中国云时代; 十年后,阿里云在中国市场份额超过2-8名总和,培育了整个中国云计算市场,数字经济在云上蓬勃发展。 …