面试官:你知道数据质量吗?

1. 数据质量标准

数据质量分5个方面来谈,分别是:完整性、规范性、一致性、准确性、时效性。定义好的数据质量标准需要数据衔接的上下游都认可,才是一个可以落地的质量标准。我们无法一次性定义出一个非常合理的数据质量标准,所以数据质量标准的定义是一个需要持续迭代,反复确认的过程。

1.1 准确性

准确性:数据的正确程度。

例如,用户在系统下下单,订单又对接给另外一家公司来处理,月底两家公司需要对订单进行数据核对,从而做财务的结算。这就会牵扯到我们去审核对方公司数据的过程。

数据的准确性可以体现在以下4个部分:
① 内容正确:比如,对方给我们的订单数据中,订单最终金额填的是优惠前的金额,那数据就错了。
② 格式合法:比如,我们期望订单的金额是decimal(16,2)类型,对方给我们是string类型,那就不符合约定的格式。
③ 数据唯一:比如,对方给我们的订单中是有重复的
④ 脏数据:比如,对方给我们的数据有脏数据,不属于我们两家订单合作的数据属于脏数据。

可以通过程序规则,统计出符合数据规范的数据比例,从而定量的来评估数据的准确性。

1.2 完整性

完整性:数据够不够,数据有没有空的或缺失的

分为2个部分:
① 记录完整性:比如,对方需要给我们20张表,但是里面有三张表是空的,或者记录是不完整的,有缺失。比如期望有3000笔订单做结算,但实际却只发了2900条,那很可能就是记录缺失了
② 元素完整性:每张表每个字段数据是否被填充完整。比如,订单总数已经修正为3000个了,但有一列“收货地址”只填充了2980条,剩下的20条是有空缺的,从而使数据在元素层面不具有完整性。再比如,订单的商品id,卖家id是必然存在的,这些字段的空值个数肯定是0,一旦空值个数大于0就违背了完整性约束。

1.3 一致性

一致性:用来形容数据无矛盾的程度。

包括2个部分:
① 相同数据一致性:比如,商品价格这个字段在商品表里有记录,在订单明细表中也有记录。如果一个商品在两张表中的价格不一致,就会产生冲突和矛盾。
② 关联数据一致性:比如,我们发现了500个用户的下单记录,我们期望每个用户都有访问网站的日志信息,但在数据终止发现了499个用户的访问信息,有一个用户是没有日志信息的,从而就造成了关联数据的不一致。

1.4 规范性

规范性:数据是否符合国际,国家,行业的标准,是否符合模型的定义。
比如,我们定义了性别是Integer类型,值域为“0、1、2、9”四个选项。但实际的数据可能不是Integer类型,或者值域不在“0、1、2、9”之中,那么我们就称它违反了规范。

1.5 时序性

时序性:在时间变化下,数据的正确程度。

分2个方面:
① 基于时间段的分布是否符合预期:比如,统计过去每一年的订单数据,我们发现每一年都有10%的提升,但是某一年有60%的骤降,那这可能就是一个异常的数据。
② 基于时间段的分布是否符合规律:比如,正常时间下,下单时间一定早于支付时间,配送时间小于用户接收时间。但凡违反了这些常识性的时间次序,我们就称它不具有数据的时效性。

2. 数据质量管理手段

2.1 手段

数据的完整性,究竟应该怎样统计它?正确性应该怎样核查它正确?一致性又该怎样来评估?总结了3种办法来完成这个事情,分别是:抽样,统计,规则

① 抽样:就是对数据集进行采样,来做质检。
比如我有N条数据记录,可以从中随机选择 根号N 条记录,并且找到它最原始、最真实的数据进行对比,从而保证数据的准确性。最源头的数据可能在数据库中,在日志服务器中。

② 统计:
总共有多少张表,非空表的比例如何?
有多少列,非空列的比例如何?
数据类型为分类值的列,它的值域统计频次如何?比如男性占比和女性占比,或者日期时间这样的列,按照月或年尺度,做数量统计的分布如何?

这些统计的数字可以被绘制成图表,从而让我们更加宏观的去把握和感知整体数据的分布,从而做质量的核查。在实际的大数据项目中,按照取值统计来做质检,是非常实用、非常有效的。它能让你更好的感知数据集的分布,并发现一些异常数据。

③ 规则:
数据规范性方面,比如,字段性别的类型是否为Integer,值域是否在“0、1、2、9”4个取值中。
数据一致性方面,比如,下单的记录是否有完整的网站访问记录。
数据时效性方面,比如,下单时间是否早于支付时间。
等等,都可以抽象化成特定的规则,来程序化的执行,从而节省人的时间。

2.2 持续改进

在实际数据生成的场景下,成本-效率-质量永远是要被平衡的三角。也就是说,在成本不变的情况下,提升质量必然会降低效率;或者在效率不变的情况下,提升质量就不得不增加成本。

在数据生产领域,核心就2点:
① 数据质检自动化:快速的发现质量问题,就是高效率的体现。
② 数据质检规则积累:可以把人的工作不断变成机器的工作,从而提升人的效能。
抓住这两个关键点,就能把降低成本、提升质量、提升效率的平衡点推上一个新的台阶。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《剑指Offer:名企面试官精讲典型编程题》剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘新鲜事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值