前言:
现时小伙伴们对“数据结构与算法实验总结50字”大体比较注意,你们都需要了解一些“数据结构与算法实验总结50字”的相关文章。那么小编在网络上汇集了一些对于“数据结构与算法实验总结50字””的相关资讯,希望你们能喜欢,我们一起来了解一下吧!相关文章
【数据架构】数据质量-实践总结
【数据架构】性能优化-实践总结
撰写原因
数据质量(这里的数据质量不包含:运行时效、任务报错,因为他们是稳定性要关注的内容,之后有兴趣可以再写一篇进行详细介绍)是数据架构中很重要的一趴,但是比较可惜的是,以往在面试很多人的时候,对于这件事情的理解仅停留在概念上,在实际工作中落地做的比较糟糕。在这里想要把自己在工作中在数据质量方面落地的经验做一下分享。
适用人群
本文适用于长期从事数据研发、数据分析相关工作的人,或者是对数据质量感兴趣的小伙伴。
基本概念
概念
注释
DQC
数据质量的简称
强DQC
当数据质量校验失败的时候,主流程直接被阻断,如下图:
强DQC一般是顺序执行,会影响整个链路的运行时效
弱DQC
当数据质量校验失败的时候,会告警但是不影响主流程的运行,如下图:
弱DQC一般是在实例执行完后,并行执行,并不会影响整个脸露的产出时效。
通用DQC
有现成模版和可视化交互,可以比较快捷的添加,例如:字段为空、数据量波动、绝对值比较
业务DQC
业务特定的校验逻辑,很难做模版抽象,一般会提供sql类型的校验方式,例如:订单和资金流失是否能够完全match
数据质量落地
讲之前我们要共识一点:完整性、准确性、一致性等等,是最终的保障目标和指导方向,不是落地策略,业务在做数据质量保障的时候一定要根据自己业务的特性,规划DQC的落地方案,下面我们正式开始。
在对业务进行DQC铺设的时候要follow以下原则:以终为始的开展工作,说人话就是:要理解业务的顶层目标,完成数据层目标拆解。数据部门要划分数据质量的保障等级,最好能够和公司层面的故障等级对齐。一个健壮的链路一定要包含强DQC, 因为只加弱DQC的话,错误的数据还是会回流到线上进行展示。重要的业务不能只是通用DQC,一定要包含业务DQC的。链路特别长的时候,DQC方案一定要考虑出现问题时,问题的分析和定位能力。
下面重点聊一下1、2、4、5三点。
以终为始
这是我们做数据质量的起点,最好全程参与整个大项目的立项、需求分析以及系分,因为在这个过程中你要识别下面几个关键的点:
数据的重要程度,例如:是否对客、是否会引起舆情、是否会带来资损。因为很多业务同学会无脑的提最高保障等级,但是从来不考虑保障成本,业务同学进来要拉齐这一块的共识。划分资产保障登记,一般情况下数据侧输出的数据影响面是不一样的,可以按照上述的重要程度划分表和字段的保障等级。明确任务的产出时效,是否有硬卡点的时间,例如:和外部签订了SLA, 在特定时间无法产出,要赔钱。要资源,包括人力资源和机器资源,因为高等级的保障需要消耗大量的人力,主要是DQC铺设和后续的运维保障。
保障等级权衡
保障等级的划分这里不写了,每个公司规模和用户不一样,分级的策略会有比较大的策略,但是,考虑的维度基本就是客诉、舆情和资损。保障等级越高意味着容错率低,添加的强DQC也就会越多,进而带来的成本(人力和资源)的提升,并拉低时效性(因为DQC是顺序执行的,添加的越多,运行时间越长)。尤其是人力成本:因为DQC的成本远大于任务开发的成本,后续有变更的时候都要跟着变,这个成本作为TL必须要时刻关注。
保障等级给一下个人建议:
ROI是数据质量必须考虑的指标,数据质量从来都不是做的越完善越好。在添加一个DQC的时候,可以思考一下,我加这个的成本(日工资*时间),和不加DQC出问题带来的损失相比,那个更高。对外承诺时效性一定要慎重,大部分对外的数据对于质量的要求是大于时效的,但是也不乏同行在卷我们。这时候一定要充分调研当前集群水位和链路完成基线,承诺的时间要小于当前极限1~2小时。
为什么要包含业务DQC
工作时间越久你会越来越发现,到落地层面几乎没有放之四海而皆准的规范。数据领域模型在构建的时候,更是千差万别,有根据客户端埋点生成的用户动线;有根据业务数据生成销量数据;有经过算法挖掘的业务维度,类型差异这么大,很难用通用的DQC来保障质量。
因为通用的DQC智能告诉你没有大问题,但是没办法回答没问题。以账单为例,通用DQC只能在数据量膨胀和过滤条件错误的时候,识别出来大面积用户受影响了,但是如果缺失了一笔资金的数据是无法识别的,这时候就需要添加资金和交易表关联的DQC,才能识别精细化的问题。
DQC要具备分析定位能力
对于比较长的链路,数据质量出现问题的时候,排查一直是很头疼的问题。如果中间没有构建任何分析下钻能力的话,则需要从头到尾一级一级溯源,太浪费时间。所以DQC在铺设的时候要考虑后续问题定位时效,可以开发与DQC相关联的BI报表分析能力,DQC添加策略个人建议如下:
团队边界必须添加DQC,这样在出问题的时候可以迅速拉起兄弟团队帮忙一起排查。整个链路上每各一个小时添加一个DQC, 这样在任务报错后,可以快速的修改后重跑,运行时效受影响较小。最终的叶子节点的表和字段必须添加DQC校验,因为是对外输出的最后一道墙。