十五、数据管理——数据质量
数据质量时数据分析结论有效性和准确性的基础,也是一切的前提。确保数据可用性
15.1 数据质量保障原则
-
完整性。数据完整性是数据最基础的保障;指数据的记录和信息是否完整,是否存在缺失的情况。数据缺失包括记录的缺失和记录中某个字段信息的缺失
-
准确性。数据汇总记录的信息和数据是否准确,是否存在异常或者错误的信息;
-
一致性。阿里的数据仓库,内部有很多业务数据仓库分支,对于同一份数据,必须保证一致性;
-
及时性。 数据要及时产出
15.2 数据质量方法概述
15.2.1 消费场景知晓
主要通过数据资产等级 和 基于元数据的应用链路分析 解决。
1. 数据资产等级定义
- 根据数据产品和应用的影响程度,给数据产品和应用划分资产等级,并打标处理;
- 五个数据等级,不同性质的重要性一次降低:
-
毁灭性质,数据一旦出错,将会引起重大资产损失,面临重大受益损失,造成重大公共风险;
-
全局性质,数据直接或间接用于集团业务和效果的评估、重要平台的运维、对外数据产品的透露、影响用户在阿里系网站的行为等;
-
局部性质,数据直接或间接用于内部一般数据产品或者运营 / 产品报告,如果出现问题会给事业部或业务线造成影响,或者造成工作效率损失;
-
一般性质,数据主要用于小二的日常数据分析,出现问题几乎不会带来影响或者影响很小;
-
未知性质,不能明确说出数据的应用场景,则标注为未知;
- 如果一份数据出现在多个应用场景中,遵循就高原则
2. 数据资产等级落地方法
-
根据数据链路血缘,将资产等级上推至各数据生产加工的各个环节,确定链路上所有涉及数据的资产等级,情打标处理;(等级标签与对应的数据产品 / 应用一致)
-
数据从业务系统到数据仓库再到数据产品,都是以表的形式体现的
-
同步到数据仓库(对应到阿里就是 MaxCompute 平台)中的都是业务数据库的原始表,主要用于承载业务需求,往往不能直接用于数据产品;(一般是 ODS 层的全量数据)。在数据产品中使用的都是经过数据仓库加工后的产出表;(根据需求 / 报表进行加工)
-
这样就可以知道哪些表是为哪个数据产品或应用服务的,可以将整个消费链路打上某一类数据资产的标签。
15.2.2 数据生产加工各个环节节点校验
目的:保障数据准确性、保障与离线数据的一致性。 主要对两部分的数据卡点校验:在线系统和离线系统数据生产加工各个环节的卡点校验
在线系统 OLTP
主要指在在线系统的数据生产过程中进行的卡点校验。目的:保障与离线数据的一致性
既要在工具上自动捕捉每一次业务的变化,同时也要求开发人员在意识上自动进行业务变更通知;
工具:
-
包括发布平台,业务进行重大变更时,订阅发布过程,然后给到离线开发人员,使其知晓此次变更的内容;针对全集团重要的高等级数据资产,整理出哪些变化会影响数据的加工,则订阅这些内容。卡点:发布平台集成了通知功能,针对重要的场景发布会进行卡点,确认通知后才能完成发布;
-
数据库表的变化感知。无论是随着业务发展而做的数据库扩容还是表的 DDL 变化,都需要通知到离线开发人员;解决方法:通过数据库平台发送库表变更通知
人:
- 将离线数据的诉求、离线数据的加工过程、数据产品的应用方式,告诉在线业务开发人员,使其意识到数据的重要性,了解数据的价值,同时也告知出错后果,使在线开发人员在完成业务目标时,也要注重数据的目标,做到业务端和数据端一致;
离线系统 OLAP
-
保障数据加工过程中的质量。目的:保障数据加工过程中的质量(主要指数据的准确性)
-
代码提交时的卡点校验: 使用代码扫描工具 SQLSCAN,扫描代码提取风险点;
-
任务发布上线时的卡点校验:为了保障线上数据的准确性,每一次变更都需要线下完成测试后在发布到线上环境中,线上测试通过后才算发布成功;主要包括 Code Review 和回归测试(保障新逻辑的正确;保证不影响非此次变更的逻辑)在线上做 Dry Run 测试或者真实环境运行测试
-
节点变更或数据重刷新前的变更通知: 使用通知中心,将变更原因、变更逻辑、变更测试报告、变更时间等自动通知下游,下游对此次变更没有异议后,再按照约定时间执行发布变更
15.2.3 风险点监控
主要针对在数据运行过程中可能出现的数据质量和时效等问题进行监控
在线数据。主要针对在线系统日常运行产出的数据进行业务规则的校验
- 在每一个业务系统中,当完成业务过程进行数据落库时,BCP 订阅一份相同的数据,根据提前设定好的业务规则,在 BCP 系统中进行逻辑校验,当校验不通过时,以报警的形式披露出来,给到规则订阅人,以完成数据的校对;
- 过程:首先进行数据源订阅,然后进行规则编写(核心),最后是配置告警。
- 如订单拍下时间不会大于当天时间
离线数据。 主要是针对离线系统日常运行产出的数据,进行数据质量监控和时效性监控;
- 数据准确性
DQC(Data Quality Center,数据质量中心):主要关注数据质量,通过配置数据质量校验规则, 自动在数据处理任务过程中进行数据质量方面的监控。
- 数据及时性
对于 Map 任务和 Reduce 任务,调度是一个树形结构(RelNode 树),当配置了叶子节点(RelNode 节点)的优先级后,这个优先级会传递到所有上游节点,所以优先级的设置都是给到叶子节点,而叶子节点往往就是服务业务的消费节点;
- 设置优先级:首先确定业务的资产等级,等级高的业务所对应的消费节点自然配置高优先级,一般业务则对应低优先级,确保高等级业务准时产出;
- 任务报警:和优先级类似,也是通过叶子节点传递;实时监控
- 摩德萨:根据离线任务的运行情况实时决策是否告警、何时告警、告警方式、告警给谁等。包括强保障监控和自定义监控。
15.2.4 质量监控
包括事前(DQC覆盖率) 和 事后 (跟进质量问题)的衡量
-
数据质量起夜率:用每个月的起夜次数,作为衡量数据质量建设完善度的一个指标
-
数据质量事件:针对每一个数据质量问题,都记录一个数据质量事件
- 用来跟进数据质量问题的处理过程;
- 用来归纳分析数据质量原因;
- 根据数据质量原因来查缺补漏,既要找到数据出现问题的原因,也要针对类似问题给出后续预防方案;
-
数据质量故障体系: 故障定义、故障等级、故障处理、故障review
15.2.5 质量配套工具
针对数据质量的各个方面,都有相关的工具进行保证,以提高效能;