热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试题:如何验证指标结果准确?

问题昨日群内发起一项比较有意思而且开放性的问题:在日常工作当中,大家开发完指标后,是如何验证结果是准确的?这里把大佬们的

问题

昨日群内发起一项比较有意思而且开放性的问题:在日常工作当中,大家开发完指标后,是如何验证结果是准确的?

这里把大佬们的思考分享出来,同时也做一下汇总,笔者能力和水平有限,如有错误之处,请多多指点。如果同学有更好的想法欢迎一起加入讨论。


大佬解答

以上大佬们的解答相信也是很多同学日常的操作,可以说是丝毫没有半点毛病。


总结

这里需要把该问题和保障数据一致性问题区分开来,本文讨论的是数据的准确性问题(DQC范畴)。

笔者结合前面大佬们的讨论并查询了一些资料,做出一些总结供大家参考。主要分为以下几个部分:
1、验证指标结果准确的几个方向
2、确保指标结果准确的几项措施


验证方法


口径对齐、数据源统一

做过数据开发的同学应该都有过因为口径理解不一致或者使用数据源不同出现返工的情况,这种情况的出现就会和需求方心中所预期的结果有所偏差。所以笔者这里把口径对齐和数据源统一作为指标结果准确的前提,否则无论经过后续的多少种验证方法都无法完成交付。


直接核对

这种校验方式如前面大佬所提,比如对于统计当日新增用户数这类简单指标,可直接通过明细比对。这种方式也是最简答粗暴的。


参照对比

对于无法直接通过明细比对的情况,可以跟历史数据或者同类数据进行对比,通过观察是否有大幅度的波动差异来验证合理性,比如历史日活在30w左右,新统计的日活数据只有几w,这种大幅度的升高或者降低的现象,要么是出现业务异常或者进行了一些业务操作,要么就是数据统计错误。当然参照对比的方式只能接近需求方的容忍程度,并不能完全保证准确性。


勾稽关系验证

先来介绍下勾稽关系的定义:指账簿和会计报表中有关数字之间存在的,可据以相互考察、核对的关系。举个简单的例子:公司发了1000 的薪资给A,那么A就会有1000 的收入,这两者间可互相验证,互相勾稽,就是勾稽关系了。一般对于指标之间有逻辑或者计算关系的时候,可以采用该种方式。比如B指标值=A指标+C指标值。


穿行测试

穿行测试(walk through testing)是指追踪交易在财务报告信息系统中的处理过程,这里所指的是通过一个实际的数据来串联整个业务逻辑进而检查每个环节是否符合业务逻辑。通常这种方式是由测试人员介入验证,也是验证开发逻辑最好的一个方式。


合理判断

合理判断的方法就需要开发同学要对业务有深刻的理解,和前面介绍的参照对比有点类似,这里的合理需要结合企业当前业务情况进行评估判断,心里清楚的知道自己统计出的指标值应该在什么样的一个范围。

简单为大家介绍以上几种验证方法,当然通常还会通过检查结果空值率、是否存在无效值、格式类型、离散分布等等指标来验证结果的准确度。笔者这里找了一份关于统计数据准确评估方法列表供大家参考

注:该图来自于《王华 金勇进. 统计数据准确性评估:方法分类及适用性分析[J]. 统计研究, 2009, 26(1): 32-39.》

如果大家有其他好的验证方式,欢迎一起讨论。


保障措施

要想保障数据准确,那么我们需要知道数据出错可能会在哪几个环节上,要想知道数据可能会出错在哪几个环节上,那么我们就要知道数据的流转是怎样的。大家都知道数据的整个生命周期包括:生产、存储、清洗、加工处理、对外服务。

那么要想保障最终结果的准确,那么就要保障每个环节的准确。这里引入一个数学题:假设一个工作需要100道工序完成,如果每一道工序的合格率都达到99%,经过100道工序后,那么产品的总合格率就是36.6%。可想而知,要保障数据准确性,涉及到的因素非常多,出错率也是非常高的,但我们仍需要各种措施来提高准确度。

笔者这里以数仓为例,对于数据流转抽象成入仓、仓内加工、出仓三块
1、首先要保障源头准确,入仓采集质量要严格把关,比如日志采集是否丢失、数据漂移、主备库延迟等问题。对于核心数据必须要配置稽核以此来保证贴源。

2、对于仓内清洗加工处理环节,需要确认清洗规则、按规范行事,该统一类型的要统一掉,该填充数据的地方要填充,同时也要注意调度周期、依赖关系、稽核等配置。

3、最后一公里也是要注意数据的正确使用,要跟数据责任人确认其使用方式及适用场景,避免出现引用表错误、限定条件设置错误、关联错误等,同时要保证口径对齐,这里涉及到OneData体系建设,内容比较多的,以后有机会再分享。

只有上游数据源统一、中游加工配置无误、下游使用得当,最后才能得到可靠、有用的数据价值。

当然前面也提到必须要保证每个环节都能达到99%以上的准确率,最终的交付物合格率才有可能达到99%。因此数据出错不可怕,只要能做到及时发现问题、保证沟通流畅,减少数据影响范围,降低损失,如此往复循环,数据可靠性也会越来越高。


推荐阅读
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本文介绍如何使用命令行工具查看和解析 iOS 应用崩溃日志,包括 UUID 和错误代码位置的详细步骤。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Win10 周年更新 14393.1737 的详细内容与改进
    尽管今天不是常规的周二补丁日,微软依然发布了 Win10 周年更新 14393.1737 和 Win10 创意者更新 15063.632。本文将详细介绍 Win10 周年更新 14393.1737 的主要更新内容。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文详细介绍了视高视频会议系统的音频、数据协作、会议交互以及协同办公功能,并探讨了其在实际应用中的优势。系统支持多种语音编解码技术,提供稳定的语音通信;数据协作功能包括远程电子白板、屏幕共享等;会议交互设计人性化,提升会议效率;协同办公模块则进一步增强了系统的实用性和扩展性。 ... [详细]
  • 首先请求进入DispatcherServlet由DispatcherServlet从HandlerMappings中提取对应的Handler此时只是获取到了对应的Handle,然后得去寻找对应的适配器,即:HandlerAdapter拿到对应HandlerAdapter时,这时候开始调用对应的Handler处理业务逻辑了(这时候实际上已经执行完了我们的Controller)执行完成之后返回一个Mo ... [详细]
  • ProgressReportNov7-Nov 15 ... [详细]
  •  基础篇 CleanCode《代码整洁之道》PragmaticUnitTesting《单元测试之道》TheProductiveProgrammer《卓有成效的程序员》Test-Dr ... [详细]
  • GearmanPHP实现分布式对象调用http:netkiller.github.iojournalgearman.php.htmlMr.NeoChen(netkiller),陈景 ... [详细]
  • 一、数据库并发测试的必要性1、与数据库连接的服务程序采用多线程同时开启多个数据库连接;2、与数据库连接的服务程序单线程,但是同时开启多套服务程序 ... [详细]
  • Thefollowingentryallowsuserstoadjustthehorizontaldefaultwidthbetweenthet ... [详细]
author-avatar
手机用户2602933123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有