数据中台选型必读(四):要想中台建的好,数据模型得做好

news2024/11/20 9:12:46

在数据中台构建之前,分析师经常发现自己没有可以复用的数据集,不得不使用原始数据依次进行数据的清洗、加工、计算指标。

在这里插入图片描述

重复进行原始数据的清洗加工

由于业务部门的分析师大多是非技术出身,写的SQL可能比较差,多层嵌套对后台的计算和调度资源消耗非常大,造成队列阻塞,影响其他数仓任务,导致开发不满。

开发可能会取消分析师的原始数据读取权限,如果想取数,需要单独和开发沟通。

那么这会严重影响分析师的工作效率,分析师会抱怨开发提供的数据不完善、速度慢,一个需求经常要等一周甚至半个月。

以上场景矛盾的根源在于数据模型无法复用。数据开发是烟囱式的,每次遇到新的需求,都从原始数据重新计算,非常耗时且浪费资源。

01

“好”的数据模型是啥样?

在这里,我们先区分业务系统中的数据模型和数仓中的数据模型的不同(如下表)。

表1数据模型的不同

数据中台的数据模型是整合数仓的数据模型得到的,我们需要重点关注如何诊断当前数仓中数据模型的问题以及如何搭建数据中台可复用的数据模型。

回忆背景篇中关于数仓的分层设计,我们知道当前主流数仓分成以下4个层级:

数仓基础架构图

下面的两张表是基于元数据中心提供的血缘信息,分别统计大数据平台上正在运行任务和即席查询。

表2:各层表状态统计

即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。

表3:各层查询数量统计

表2中有2547张未识别分层的表,占总表的40%,它们基本没办法复用。

在已识别分层的读表任务中,ODS : DWD : DWS : ADS的读取任务分别是1072 : 545 : 187 : 433,直接读取ODS层任务占这四层任务总和的47.9%,这说明有大量任务都是基于原始数据加工,中间模型复用性很差。

在已识别的分层的查询中,表2中ODS : DWD : DWS : ADS的命中查询分别是892 : 1008 : 152 : 305,有37.8%的查询直接命中ODS层原始数据,说明 DWD、DWS、ADS 层数据建设缺失严重。

尤其是ADS和DWS,查询越底层的表,就会导致查询扫描的数据量会越大,查询时间会越长,查询的资源消耗也越大,使用数据的人满意度会降低。

进一步对ODS层被读取的704张表进行分解,发现有382张表的下游产出是DWS,ADS,尤其是ADS达到了323张表,占ODS 层表的比例45.8%,说明有大量ODS层表被进行物理深加工。

通过上面的分析,我们似乎已经找到了理想数据模型设计具备的要素:可复用、够完善、守规范。

在这里插入图片描述

那么,如何具体地度量这三个要素呢?

02复用度

数据中台数据模型设计的核心是实现模型的复用与共享。

通过元数据中心的数据血缘图,可以看到,一个比较差的模型设计,自下而上是一条线。而一个理想的数据模型设计,它应该是交织的发散型结构。

好坏模型对比

复用度可用模型引用系数衡量:引用系数越高,数据模型的复用性越好。

模型引用系数=被读取模型直接产出下游模型的数量

比如一张DWD层表被5张 DWS 层表引用,这张DWD层表的引用系数就是 5,如果把所有DWD层表(有下游表的)引用系数取平均值,则为DWD层表平均模型引用系数;从经验上看,一般低于2比较差,3以上相对比较好。

一种提升数据模型复用度且提升响应速度的策略,是在数据源和数据使用之间增加缓存层。缓存层中存放复用度较高的数据模型,以及这些数据模型所携带的数据。

分析师或业务人员根据需求查询数据时,如果是常用的数据模型,便不必再进行从源数据中取数、清洗、拼接等重复动作,从缓存中直接导入数据模型即可,大大提升复用数据模型的前端响应速度。

缓存层策略

03

完善度

衡量DWD层是否完善,需要确认ODS层有多少表被 DWS/ADS/DM 层引用。

如果DWD以上的层引用的越多,就说明更多的任务是基于原始数据进行深度聚合计算的,明细数据没有积累,无法被复用,数据清洗、标准化、集成存在重复开发。

因此,可以用跨层引用率指标衡量DWD的完善度。

跨层引用率=ODS层直接被DWS,ADS,DM层引用的表数量/所有活跃的ODS层表。

跨层引用率越低越好,因为在数据中台模型设计规范中,不允许出现跨层引用,ODS 层数据只能被DWD引用。

针对DWS/ADS/DM层完善度,主要看汇总数据能直接满足多少查询需求(也就是用汇总层数据的查询比例衡量)。

如果汇总数据无法满足需求,使用数据的人就必须使用明细数据,甚至是原始数据。

汇总数据查询比例=DWS/ADS/DM层的有效查询/所有有效查询。

汇总数据查询比例越高,说明上层的数据建设越完善,对于使用数据的人来说,查询速度变快、性能提升。

04规范度

规范度其实没有特别明确的量化指标,主要根据数据表命名或归属主题域是否正确等情景,进行定性判断。

表2:各层表状态统计

表2:各层表状态统计

例如,在表2中,有超过40%的表都没有分层信息,在数据模型设计中,这显然不规范。

除了确定表有没有分层,还要看它有没有归属到正确的主题域(例如交易域)。如果没有归属主题域,就很难找到这张表,也无法复用。

其次,我们需要看表的命名。一个规范的表命名应该包括主题域、分层、表是全量快照,还是增量等信息。

除此之外,如果在表A中用户ID的命名是UserID,在表B中用户ID命名是ID,就会对使用者造成困扰,这到底是不是一个表。

因此,我们要求相同的字段在不同的模型中,它的命名必须是一致的。

05我们进行一个简短的总结:

要想得到一个“好”的数据模型,首先,我们可以统计未规范表的数量(可仿照表2),诊断数据模型现状。

然后,制订一些针对性的改进计划,例如把这些不规范命名的表消灭掉,把主题域覆盖的表比例提高到90%以上。

在进行一段时间的模型重构和优化后,再拿着这些指标去评估是否有所改善。

很多数据开发在向上级汇报工作时,喜欢用重构了多少模型说明工作成果,很多老板会想,这些重构到底对数据建设有多少帮助?有没有一些量化的指标可以衡量?

因此,我们需要着重考虑是否真的改善了?以及如何证明真的改善了,而不是强调优化了多少模型。

假设当前我们已经对数仓中的数据模型做好评估和改进了,那么,我们需要怎么做才能让它变成一个数据中台呢?下一篇文章我们继续讨论。

如果喜欢麦聪的文章,记得点赞、收藏加关注嗷;关注+私信可获得超好用的数据中台产品安装包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学类-13-02】20221115《数字色块图5*7*8横板》(中班主题《》)

效果展示 背景需求: 前期中3班制作5*7 *9张数字图,发现三个问题: 1、数量太多,填不完——每人9张调整为每人4张(一张A4两份作业) 2、数字太浅,看不清——5*7的提示数字是灰色,数字…

WeNet更新:喜马拉雅团队在 WeNet 中支持 Squeezeformer

WeNet在正式发布两年的时间里,成为非常热门的ASR生产工具,其面向生产的属性更是深受工业界的好评。近期,喜马拉雅团队在WeNet中支持了Squeezeformer的相关工作。本文由喜马拉雅珠峰智能实验室撰写,介绍了Squeezeformer论文的复现细…

vant_vant引入

目录vant官网使用vant[1]导入vant 的所有组件[2] 按需引入组件[3]自动按需引入组件使用过程中遇到的问题[1]问题1-版本冲突vant官网 vant2.0官网 使用vant 参考vant官网–>快速上手–>通过npm安装/引入组件 [1]导入vant 的所有组件 [1] 安装 vant :npm i va…

基于matlab的MRC最大合并比误码率仿真,包括维特比译码,MRC,中继

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 最大比合并(Maximal Ratio Combining,MRC)是分集合并技术中的最优选择,相对于选择合并和等增益合并可以获得最好的性能,其性能…

STC51单片机29——汇编语言 取表法 流水灯

汇编语言编写流水灯 ORG 0 START: MOV DPTR,#TABLE LOOP: CLR A MOVC A,ADPTR CJNE A,#01H,LOOP1 //假如A等于01H ,则执行下一句 JMP START LOOP1: MOV P1,A MOV R3,#20 LCALL DELAY INC DPTR //指针自加1 JMP LOOP DELAY: MOV R4,#20 D1: MOV R5,#24…

【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测 目录 异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 训练一个双向 LSTM 自动编码器来检测机器是否正常工作。 自动编码器接受…

一文教你搞懂Go中栈操作

LInux 进程在内存布局 多任务操作系统中的每个进程都在自己的内存沙盒中运行。在 32 位模式下,它总是 4GB 内存地址空间,内存分配是分配虚拟内存给进程,当进程真正访问某一虚拟内存地址时,操作系统通过触发缺页中断,在…

前后端必知必会的HTTP,这份全彩版图解手册可算是给讲透了

HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议。是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它…

基础15:npm、yarn、pnpm

npm2 用 node 版本管理工具把 node 版本降到 4,那 npm 版本就是 2.x 了。 执行 npm init, npm install express,可以看到node_modules目录如下: 可以看到,npm2的node_modules是嵌套的。 这种方式的优点就是模块依赖关…

NDIR二氧化碳传感器原理介绍

文章目录1. 引言2. 分类3. 红外气体传感原理3.1 朗伯-比尔定律3.2 非分光红外(NDIR)法检测原理3.3 浓度、温湿度标定3.4 响应时间研究4. 参考文献1. 引言 环境领域:近些年,二氧化碳是引起温室效应的主要气体,因此引起…

项目可交付成果的质量管理该怎么做?

通往项目最终服务或产品的道路往往是由许多临时可交付成果铺就的。每一个可交付成果本身都必须完整、质量合适并与所有其他可交付成果协调,同时确保: ● 保持客户和主要利益相关者所要求的质量水平。 ● 项目可交付成果是根据客户的规格和项目目标开发…

使用jenkins自动打包构建Maven项目

1.Jenkins是什么(借鉴官网) Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序 2.Jenkins下载安装 …

指纹和虚拟机哪个好用?两者之间的区别是什么?

2022年了,相信大家对指纹浏览器都不陌生了,很多做跨境电商、海外社媒营销、联盟营销的企业都会借助指纹浏览器来多账号批量管理。而在指纹浏览器没出现之前,大部分企业都会使用虚拟机来解决浏览器环境安全问题。所以指纹浏览器和虚拟机到底哪…

EN 14967:防水沥青防潮层—CE认证

防水沥青防潮层CE认证(欧盟强制认证)-简介 在欧盟市场“CE”标志属强制性认证标志,以表明产品符合欧盟《技术协调与标准化新方法》指令的基本要求。这是欧盟法律对产品提出的一种强制性要求。 在防水沥青防潮层上加贴CE标志不但可…

2021年全国职业院校技能大赛高职组“软件测试”赛项—“阶段二竞赛任务书”

2021年全国职业院校技能大赛高职组 “软件测试”赛项—“阶段二竞赛任务书” 2021年6月 软测讨论611474045 一、竞赛时间、内容及成绩组成 (一)竞赛时间 本阶段竞赛时间共为3小时,参赛选手自行安排任务进度,休息、饮水、如厕…

操作系统4小时速成:进程管理复习重点,进程,线程,处理机调度,进程同步,死锁

操作系统4小时速成:进程管理复习重点,进程,线程,处理机调度,进程同步,死锁 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开…

基于servlet的校园车辆管理系统

开发环境 eclipsemysql5.7jdk1.8 系统简介 基于Web的校园车辆管理系统主要用于对校园内的车辆进行管理,基本功能包括:人员信息管理模块,车位信息管理模块,IC卡信息管理模块,固定车辆管理模块,临时车辆管…

Java_继承

作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:JavaSE 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结一、为什么需要继承 🍸继承最大的意义是:对代码可以进行复用。 Java中使用类对现实世界…

Idea下载及配置

1、下载Vscode 1.1、官网 https://code.visualstudio.com/1.2、替换链接 将下载地址中的 az764295.vo.msecnd.net 更换为 vscode.cdn.azure.cn 使用国内的镜像服务器加速 https://vscode.cdn.azure.cn/stable/6261075646f055b99068d3688932416f2346dd3b/VSCodeUserSetup-x6…