数仓指标一致性以及核对方法
点击上方蓝色字体,选择“设为星标”
回复”面试“获取更多惊喜
数仓数据质量衡量标准
我们对数仓数据指标质量衡量标准通常有四个维度:正确性、完整性、时效性、一致性。
正确性:正确性代表了指标的可信度,如果一个指标无法保证其正确性,那么是不能提供出去使用,因为很有可能会导致作出错误的业务决策,通常会使用明细数据对比、维度交叉对比、实时对比离线等方式校验数据的正确性;另外一方面可以增加一些DQC校验,例如唯一性验证、最大/最小值验证等。
完整性:完整性可以从两个方面来说:一个是模型数据的完整性,例如字段是否存在空值、数据量是否波动比较大有数据缺失等;另一方面指标的丰富程度,是否有完整的数据指标来支撑业务上的分析决策。
时效性:数据产出是否及时,例如对于实时数据保证一分钟以内的延时,离线数据保证在每天8点必产出。因为离线任务是走周期性调度的,可以对不同重要程度的任务设置不同的调度优先等级,重要任务高优先级调度,以保证其产出的时效性,另外可以做一些任务处理上的优化,常见数据倾斜问题,缩短任务处理时间。
一致性:一致性表示相同的业务指标在不同的场景下(这里的场景可以系统、数据模型、实时/离线等)其指标值不一致。通常的问题可能是计算口径不一致、计算数据来源不一致等等。
关于数据质量衡量标准除了以上四个维度外,可能还会有规范性、安全性等上面的考虑,其中一致性是出现比较多的一类问题,同时排查起来的难度也比较大,笔者将结合实际开发中遇到的一致性问题谈谈自己的看法。
指标一致性
指标一致性从问题表现上分为三类:不同模型中相同数据指标其值不一致、交叉维度数据汇总值不一致、实时/离线指标不一致,接下来分别谈谈这几类问题。
1
不同模型中相同数据指标值不一致
这类问题通常是比较明显的,在两个不同的数据模型对比时或者是在两个不同的系统中相同指标时其值不一致,其原因通常有以下几点:
指标计算口径不一致,指标由不同的数据需求方提出其对指标的定义不同或者是不同的数据开发同学对指标的理解不同导致了不同的计算口径, 例如广告订单统计,一个是session口径,一个是cookie口径;
计算使用的数据源不一致,这里面可能是有重复的采集链路,数据采集的规则又不一致;
不同的业务口径数据,使用了相同的指标命名,没有按照数据开发规范或者是没有统一的字段命名规范导致命名歧义,例如下单金额/支付金额同时命名为order_amt。
对于相同的指标我们都知道需要采取的策略就是复用,将公共的指标沉淀到dws层或者是adm层,提供给上层不同的使用方,但是为什么还是会经常出现一致性问题,我认为可以从组织合理性、需求/模型评审机制角度去解决。
组织的合理性
在早期的数仓建设中,不同的数据开发人员随着不同业务线的方式去建设该业务域的数据,也就是我们常说的烟囱式开发,这种方式的优点就是可以随业务快跑,但是随着公司的体量变大业务线变多,这种方式就不适用了,因为不同业务线的数据开发人员很难达到信息完全互通,必然会导致很多重复性的建设工作,从数据埋点、采集、开发都有可能会重复建设,因此需要将数据以中台化的方式提供出去,在组织结构上建立中台部门,专门负责数据中间层的开发,对于这部分人员需要有全局的视角去看待数据指标的沉淀,上层应用层由专门的业务线的数据开发负责
需求/模型评审机制
建立统一的需求评审机制,从需求承接时间、制定需求模板(业务背景、所需的数据指标等)等制定一套规范,严格把控需求质量,如果需求承接本身变得很混乱,例如需求不明确、需求没有统一管理,那么很可能会导致重复性的建设工作;模型评审主要评审模型设计的是否合理,表/字段命名是否规范、应该是全量表还是增量表、分层是否按照要求、公共指标应该放在dws层还是adm层等,保证模型的质量来避免以后出现的二义性。
2
交叉维度数据汇总值不一致
交叉维度数据汇总值不一致表示的是不同低维向相同高维汇总得到的指标不一致,例如在广告场景中,广告投放会创建投放计划,投放计划里面会投放不同的商品,在统计广告效果数据就会产生计划维度数据、商品维度数据,但是可能会出现计划维度向上汇总账户数据与商品维度向上汇总账户数据不一致。这里出现的原因一般有以下几点:
数据缺失,在明细数据层某个维度的数据出现空值情况导致向上汇总记录丢失;
计算口径不一致,例如商品维度数据与计划维度数据其计算的口径不一致,必然导致向上汇总结果不一致。
解决这类问题,需要提前对数据进行交叉验证,即明细层与不同维度层数据进行交叉验证,确保数据的一致性。
3
实时、离线指标不一致
目前大多数情况下使用的数仓架构还是经典的Lambda架构,因此实时、离线指标不一致仿佛成为了数据开发人员的一个共识,导致出现一致性问题通常有以下几点原因:
计算逻辑无法对齐,其原因有二:一、实时、离线是两个不同的数据团队成员开发,其对业务的理解不同;二、离线逻辑本身相对比较复杂,可以做很多补偿逻辑,实时处理却相对比较简单;
数据源不一致,通常接入的数据源有日志与binlog,binlog基本都能保证一致,但是对于日志在一些场景不能做到完全一致,例如风控场景提供的点击日志提供下游使用,实时、离线反作弊模型差异导致风控过后的数据存在差异;
离线、实时技术栈对一致性的支持程度不同,离线通常都是批处理的调度模式,当出现异常情况,只需要重新调度直接进行分区覆盖即可,而实时处理本身对消息处理的顺序性有比较高的要求,另外加上端到端一致性实现复杂等等,在某些场景并不能保证与离线同等的一致性。
针对以上问题,提供两种思路:第一种是预先实时、离线指标对比,找到其中产生数据gap的原因并且解决, 尽量降低实时与离线之间的差异,同时也可以提前说明实时指标准确率;第二种流批一体的架构,流批一体可以从计算统一,也可以是存储统一,这里主要介绍流批一体的OLAP架构,只需要将数据实时或者离线写入OLAP存储引擎中,直接在OLAP进行分析,这种方式弱化了离线、实时的概念,例如Hologres 、Doris等。
《大数据成神之路》正在全面PDF化。
你只需要关注并在后台回复「PDF」
就可以看到阿里云盘下载链接了!
另外我把发表过的文章按照体系全部整理好了。现在你可以在后台方便的进行查找:
电子版把他们分类做成了下面这个样子,并且放在了阿里云盘提供下载。
我们点开一个文件夹后:
如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!
Hi,我是王知无,一个大数据领域的原创作者。
放心关注我,获取更多行业的一手消息。
2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
互联网最坏的时代可能真的来了
我在B站读大学,大数据专业
我们在学习Flink的时候,到底在学习什么?
193篇文章暴揍Flink,这个合集你需要关注一下
Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点
我们在学习Spark的时候,到底在学习什么?
在所有Spark模块中,我愿称SparkSQL为最强!
硬刚Hive | 4万字基础调优面试小总结
数据治理方法论和实践小百科全书
标签体系下的用户画像建设小指南
4万字长文 | ClickHouse基础&实践&调优全视角解析
【面试&个人成长】2021年过半,社招和校招的经验之谈
大数据方向另一个十年开启 |《硬刚系列》第一版完结
我写过的关于成长/面试/职场进阶的文章
当我们在学习Hive的时候在学习什么?「硬刚Hive续集」
数仓指标一致性以及核对方法相关推荐
- 电商离线数仓-业务数仓指标(GMV主题/转化率主题)
GMV和转化率 GMV主题 GMV的概念 GMV表的创建 GMV表里导入数据 转化率 转化率概念 转化率表的创建 转化率表里导入数据 ADS层用户行为漏斗分析 GMV主题 GMV的概念 什么是GMV? ...
- 数仓:事实表设计方法,原则和三种类型选择
关注公众号,回复关键字 [资料],获取[10万字大数据框架面试知识点]与[大数据开发的命令手册] 事实表设计方法 事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计.其包含与该业务过程有关的维 ...
- 数据仓库知识点总结(数仓分层建模、维度建模等)
数据仓库知识点总结 推荐学习<华为数据之道><数据仓库工具箱-维度建模权威指南>两本书. 此文档是数据仓库建模的知识点总结文档,在持续更新中(2021-10-13). 文章目录 ...
- 如何创建数仓指标体系?指标建模的基础理论
数仓指标体系建模方法 1.指标体系 2.指标建设过程中遇到的问题 3.指标建设方法论 3.1.北极星指标 3.2.OSM+UJM 模型 4.指标的构成 4.1.指标分类 4.2.指标分级 5.如何设立 ...
- 【离线数仓-3-数仓建模方法理论汇总】
离线数仓-3-数仓建模方法理论汇总 离线数仓-3-数仓建模方法理论汇总 1.数仓概述 2.数据仓库核心架构(Hive) 3.数据仓库建模概述 4.数据仓库建模方法论 1.ER(Entity Relat ...
- 【数仓】浅谈数仓建模的方法
一篇比较全面介绍数据仓库建模方法的普及文章,主要包括了四个方面的内容: 1.什么是数据模型:简而言之就是对现实世界业务对象及关系的抽象. 2.为什么需要数据模型:数据模型不是必需的,建模的目的是为了改 ...
- 亿级数据服务平台:跟低效率、指标难统一的数仓说再见!
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 数据服务是数据中 ...
- 数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系
序列号 内容 链接 1 大数据知识面试题-通用(2022版) https://blog.csdn.net/qq_43061290/article/details/124819089 2 大数据知识面试 ...
- 数仓中指标-标签,维度-度量,自然键-代理键等各名词深度解析
作为一个数据人,是不是经常被各种名词围绕,是不是对其中很多概念认知模糊.有些词虽然只有一字之差,但是它们意思完全不同,今天我们就来了解下数仓建设及数据分析时常见的一些概念含义及它们之间的关系. 本文首 ...
最新文章
- python:文件操作
- 《Go语言圣经》学习笔记 第三章 基础数据类型
- 计算机安全基础:认证技术知识笔记
- 一代人的回忆!国产游戏机传奇落幕:官网已无法正常访问
- “中国锦鲤” 信小呆辞职旅行,这辈子真的不用工作了?
- ngnix集群产生的问题
- for循环连续创建对象
- OpenCV(项目)人脸识别(图片识别、摄像头识别)
- c语言实现词法分析器
- PcShare服务端改造
- 编译原理支配树部分名词介绍
- 台式计算机启动时 每次按f1,电脑开机每次都要按f1怎么办|电脑开机要按f1的解决方法...
- 持续集成之jenkins下载及安装
- java hssffont_Java HSSFFont.setColor方法代碼示例
- 前端页面中iOS版微信长按识别二维码的bug与解决方案
- Python每日一练(5)-百词斩
- 文件上传一些事(ie8/9下提示下载json文件)
- 智能垃圾桶(八)——红外对管传感器(树莓派pico)
- flash动画------豹子奔跑
- Arduino开发(一)_软件开发IDE工具的安装
热门文章
- 微波传声技术(Voice to skull technology)
- MindManager带你了解何为网络暴力!
- W11或W10系统如何进行休眠?
- 天猫店铺抽取的红包在哪里领取看,关于淘宝购物分享优惠商品的群
- linux deepin 64位 安装longene wineQQ 2013(部分引用)
- 从零开始构建嵌入式实时操作系统3——任务状态切换
- 东方不败III游戏修改大师
- 快速卸载antivirus(AVG)教程
- Java学习——已知有六个数字1,2,3,4,5,6 在要求将这六个数字中所有的组合存放到数组中 (1)必须是6位数 (2)每个位置上的数不能重复
- 如何培养孩子们的学习动力让孩子们爱上学习-王兆新老师课程分享