如何确定自己手中的数据是正确的,是合理的?

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 咋样才能是一个合格的大数据开发,其实我也很迷茫,不过我希望自己可以越来越清晰

首先,我要阐明一个观点,数据的正确和数据的合理在我看起来是不同的,原始数据的值和数据中台数据的值一模一样,数据在所有人眼中肯定都是正确的,而数据的合理则需要满足三个条件:第一我知道数据是合理的;第二我可以说服别人这个数据是对的;第三数据是有事实可以验证的.

而数据的合理,我认为是比数据的正确是要重要的,也只有合理的数据培养出来的产物才应该是正确的,比如我今天下单了一笔一万元的货物,但是在我下单后,货物的价格发生了变动,数据的回流存在一定延迟,所以在业务系统中一万元的货物购买了一百件商品价格为一百三十元的货物,这就涉及到源数据质量了.

源数据质量

从库同步导致问题,数据延迟导致问题,业务员手工调整数据导致问题,源系统的稳定性永远是悲观的,至少我没有办法信任任何一个接入数据中台的数据源,他们总是会出现各种奇奇怪怪的问题.

最离谱的是前不久我发现某个系统在融合其他已经废弃的系统数据的时候,根据某个映射表做的关联,但二者除了用户id相同,其他数据完全不一致,这样的数据,说他是正确的吗?那必定是正确的,毕竟旧的系统已经废弃,不可能有人再去验证,唯一能够提供佐证的只有接手的业务系统.

面对这种情况,在拉不通双方的情况下,我采取的方式是拆解用户其他信息进行关联,调整中台维表的数据来减少改动和确定数据大致正确,至于说不对的,对不起,数据开发是万万不能的.

上面说源数据我们应该秉持悲观的态度,所以我们就需要用最苛刻的要求面对源数据,从有无数据到数据合理,每一个字段都应该是清晰的,如果是含糊的,在模型开发中,字段含义的不确定性会进一步增加,而集成层使用的时候,最后的情况可能是好的,但结果一定是偏离的.

当然,如果你的公司是金融行业,那当我没有说,金融行业大部分数据都是井井有条的,再加上国家的法规,数据的可靠性比其他行业要好很多.

中间结构

中间结构其实就是模型设计,数据标准的重要性,做数据开发的朋友应该都应该有了解,单一个字段出现的时候,背后所包含的意思和字段中数据一样重要.

上面说到数据合理的三个条件,对于第三点,这里就可以得到体现,当你要验证某个字段中数据是否正确的时候,需要看下游的使用,上游的验证,但是过一段时间后你就会发现,你的下游在使用的时候会遇到各种奇奇怪怪的问题.

再举个🌰,字段名称假设叫实付金额,最开始设计的时候,源系统的实付是不包含运费的,有一天,某个源系统包含了,也进来了,下游使用的时候不需要运费,减去了运费,忽然有一天,实付金额里面又没有包含税费,下游又认为税费是实付,想让模型层在实付计算的时候加上税费,但是另外一个下游有意见了,他们认为实付金额不包含税费,之后就开始扯皮.

而你此刻就好像诸葛亮,隔岸观火,这样自然是很好,但火迟早会烧到你的身上,毕竟干活的是你,有着时间,摸鱼<・)))><<他不香?所以你只要提前写好,你认为实付金额是"用户在进行本次交易的时候,由用户实际支付的钱"就好,当集市看到的时候,他们就会意识到这个字段里包含的数据是什么,不会找你.

当需要验证数据合理的时候,源系统也有个实付金额,但是你的实付是加了运费的,含义明确,最终比对结果才会更快更准.

个人决策

这里我叫个人决策,其实是开发过程中的个人决定,是否取值,是否关联,大小表问题,调优问题,这些问题其实都是个人决策,大部分开发技术水准其实相差不大,不会的,查资料也可以解决,无非就是慢和快.

但决定数据合理与否的其实还是每个人的决策,甚至细化一点可以说是个人的心情.

程序员口中的"屎山",其实大数据开发经常面对,PB级的数据寻找问题,肉眼看过一百行,我感觉还可以,看到一千行,我心情不是很美丽,看到一万行,我想骂人;同一份数据不同维度,第一次查,第二次查,第N次查,我陷入了无穷的折磨.

这个时候其实应该梳理自己的做法,一件事情陷入重复,就需要冷静自己是不是对的,保持自己的思考严谨,心情平稳才可以有较为正确的决策,越慌乱越开心,数据的情况就会越容易出现波动.

请记住,要想有合理的数据,需要用严谨的想法,充实的数据结构和苛刻的态度对待你面前两份看起来一模一样的数据!

目录
相关文章
|
消息中间件 Java Spring
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
204 2
|
9月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
1517 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
9月前
|
SEO
如何自己搭建一个网站?
通过安装简单的CMS网站管理系统或自助建站系统,快速建立网页。步骤包括域名注册、资料实名制、网站建模、内容修改、SEO配置和上线。网站质量可通过后台更新和维护提升。
444 10
|
11月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
11月前
|
存储 数据采集 监控
CDGA\如何建立实现数据治理的效率价值框架:实践案例解析
数据治理是一个持续优化的过程。组织应建立健全的监督与评估机制,定期对数据治理工作进行评估,发现问题及时整改。广东药科大学通过数据全景图和数据监控大屏,实现了对数据治理成果的动态、多维度呈现与监控,为科学管理决策提供了有力支撑。
解释一下什么是VIF。
解释一下什么是VIF。
1481 0
|
11月前
|
存储 缓存 安全
如何保证接口幂等性,幂等性到底是干什么的
本文介绍了幂等性原则及其在程序中的应用。首先定义了幂等性,即无论执行多少次,结果不变的特性,并区分了幂等与非幂等操作。接着详细探讨了实现幂等性的策略,如使用唯一标识符、幂等性标记字段、乐观锁版本控制等。最后,通过Java示例展示了如何实现无状态幂等操作,并强调了幂等性在分布式系统和高并发场景下的重要性。
703 0
|
SQL 分布式计算 Java
DataGrip 配置 HiveServer2 远程连接访问(含账号密码验证)
该文档介绍了如何为HiveServer2配置账号密码鉴权。提供了一个名为`CustomPasswdAuthenticator`的Java类实现`PasswdAuthenticationProvider`接口,用于验证HiveServer2的用户名和密码。此外,还给出了相关依赖的Maven配置,并说明了如何将编译后的Jar包放入Hive的库中。在Hive的`hive-site.xml`和Hadoop的`core-site.xml`中需配置相应的参数以启用自定义认证。文档还列举了可能遇到的问题及解决方法,包括权限问题、数据插入错误和JVM内存溢出。
960 3
|
存储 前端开发
【大前端】用html和css写一个QQ邮箱登录页面
【大前端】用html和css写一个QQ邮箱登录页面
1094 0
【大前端】用html和css写一个QQ邮箱登录页面
|
小程序 开发工具 开发者
小程序使用 组件库 vant-weapp详细教程
小程序使用 组件库 vant-weapp详细教程
312 0