数仓架构之为什么要进行数仓分层

数仓分层这个概念想必大家都很熟悉,不管是在实际的开发工作当中会用的,还是在面试官面试你的时候会问到:你之前的项目是按照什么分层的,分哪几层,数仓分层有什么好处,举个栗子说说。

简而言之,数仓分层,是大家不能避过去的一个重点知识。

接下来,我会分享自己在多年的大数据行业的关于数仓分层的一些知识点与观点。

0,先说说什么是数仓分层吧

数据仓库:是一个由 有主题性的,可数据存储,可数据管理,方便数据开发于一体的集合。

数仓分层之后,每一层的数据的粒度,作用都很清晰,主题鲜明,也方便大数据开发人员对于业务的开发。

1,基于项目中Hive数据仓库的ETL数据流

下面这张图是在项目上的数据架构,数据的流向图:

2,数仓分层是怎么分的?分为哪几层?

一般在任何一家公司,不管是保险,银行,基金,证券,都会分4层。

比如说下图(某银行项目)为例:有SA,SHDATA,CDL,DM 四层

比如说下图(某证券项目)为例:有ODS,EWD,CDM,ADM 四层

ODS层,从各个原系统拿数据,进行数据入湖。数据一般不做任何处理,与源数据无差异。

EDW层,在ODS层的基础上,解决数据一致性的问题。

CDM层,为公共数据层,会开发出一些表,作为公共层,被下游(ADM层使用)。

ADM层,为集市应用层,开发出最终的接口表给业务使用。

3,为什么要进行数仓分层呢?有什么好处嘛? 

这个对于做过银行,证券的项目开发,基金公司的数据运维之后,理解的更加深刻了。

3.1,好处一:方便数据的血缘追踪,确定影响范围

3.1.1,(基金项目)

当每天的数据跑批完毕,把接口表(目标表)的数据报送给证监会或者人民银行的时候会给你进行数据校验,如果有问题会返回一个bad,告诉你哪条数据的哪个字段不对不符合哪个校验规则。这个时候,如果你刚入职,恰巧又拥有扎实的sql技能,别慌,你可以查看该代码,尽管有很多层代码的,但你可以一直追根溯源,查出在哪一层出错。关键是,你可以根据这一层出错,分析出哪些区域的数据受到了影响,数据是不正确的。

3.1.2,(银行项目)

简单的说,我们把应用集市的数据给到下游,最终给业务呈现的是一个业务表,如果业务人员发现某个业务表的部分数据不对,怎么办?我们要根据开发的代码,倒推出数据在哪一层的时候就开始不对,出现了问题。当然出现问题的原因可能有N多种,但是我们溯源出最底层的问题之后,我们可以快速判断,它的危害范围,及时的去维护好数据,把损失降到最低。

3.2, 好处二:复杂问题简单化,清晰数据结构

如果一个计算过程,太过于复杂,比如说要计算年度客户量??

我们可以先展示日维度的客户详细,可以查看明细数据。

接着根据日维度的客户数据,按照月维度进行汇总。

最后根据月维度的客户数据,按照年维度进行汇总。

依次展示三层的数据,咱就把复杂的问题,一步步拆解为简单化,每一层的数据结构很清楚,并且作用很明显。

重点是留下了一些余地,为什么这么说?

如果下次有个需求要算同比,环比的客户数据量呢??

求同比,直接拿年维度的中间表。求环比,直接拿月维度的中间表。

分层的好处真的太多了,更加具有前瞻性。

3.3,好处三:减少重复开发

规范数据分层,开发通用的一些中间层的表,可以极大的减少重复计算。

因为很多的业务表可能都有中间层的计算,如果大家都从源表开始依赖取数计算,那重复计算也太多了。如果直接拿中间层结果表,那计算量大大减少。

并且中间层表还比较好进行追溯,如果计算逻辑发生变更,咱们只需要更改中间表就行,而不需要把每个涉及到的业务表都去更改,那也太费劲了。

3.4,好处四:隔离原始数据

以3.2的栗子来讲,咱最终统计的数据的年客户量,就与咱们的底层数据隔离开来了。

不仅仅与底层数据隔离,而且还和月维度,日维度的数据也隔离开来了。

底层一套数据,最终的集市应用层又有一套数据,明显解耦。

3.5,好处五:以空间换时间

以空间换时间,什么意思?

以3.2的栗子来讲,咱最终要统计的数据的年客户量。理论上,咱们只需要落地这一张最终的业务表就行,但是,咱们为了大局着想,为了好追溯,为了懒得再多些代码,为了逻辑清晰层次分明,咱们又建立了一个大家公用的中间表(或者不一定是公共表,也可以是自己落地该表的独有的中间表,为了方便追根溯源),那这中间表又多占了存储空间。

虽然说多占了空间吗,但是计算量明显减少了啊,时效性上来了啊。咱也好针对问题进行追根溯源,方便你我他去依赖,开发人员的工作效率也上去了。好处太多了。

多占空间,这是弊端,提升效率,这是优势。

但世界上哪有这么好的事情呢,既可以少占空间,还计算的快,还方便查问题。

咱做人不能既要又要还要!!!

===============================================================

ok,如果面试官问你这个知识点,你可以这么密集的输出你的心得,那肯定会得到面试官的青睐。好吧,分享了这么多,希望你可以清晰的理解,什么是数仓分层?为什么要数仓分层?

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

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

相关文章

[Cocos Creator 3.5赛车游戏]第3节 新建项目

环境已经配置好,现在您将真正的开始开发您的项目,开发项目的第一步是新建项目。所以现在请关闭上一个步骤打开的Cocos Creator窗口,回到CocosDashboard,点击“新建”按钮: 选择“模板”选项卡,因为您即将开…

视频监控平台智能边缘分析一体机视频存储平台打手机检测算法

智能边缘分析一体机的打手机检测算法是一种集成了先进图像处理、计算机视觉和人工智能技术的解决方案,专门用于实时监测和识别监控场景中的打手机行为。 在提到“打手机检测算法”时,可能是指一种能够识别和检测使用手机行为的算法。这种算法可以应用于多…

29.IO流(了解)

1. C语言的输入与输出 ​ C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的…

在面对各种问题时,我们应该如何进行数据分析

python数据分析汇总 前言一、对比分析概念特征类型案例Matplotlib的颜色字母对照表解决遇到未知函数 二、相关性分析概念类型案例一案例二 三、时间序列分析概念类型案例 四、回归分析概念类型案例一案例二案例三 五、决策树概念计算过程案例 六、主成分分析概念计算过程案例 七…

武汉星起航推出亚马逊一站式孵化服务,助力卖家轻松拓展全球市场

亚马逊作为全球最大的电商平台之一,以其全球化的销售平台和完善的物流体系,吸引了众多卖家的目光。通过亚马逊平台,卖家可以轻松地将产品销往世界各地,无需担心复杂的国际贸易流程。而在这个充满机遇的市场中,武汉星起…

IDEA中开发并部署运行WEB项目

IDEA中开发并部署运行WEB项目 1 WEB项目的标准结构2 WEB项目部署的方式3 IDEA中开发并部署运行WEB项目3.1 部署步骤3.2 IDEA关联本地Tomcat 4 IDEA创建web工程5 IDEA部署-运行web项目6 IDEA部署并运行项目的原理 1 WEB项目的标准结构 一个标准的可以用于发布的WEB项目标准结构如…

安防监控视频平台智能边缘分析一体机视频存储系统客流统计检测算法

智能边缘分析一体机的客流统计检测算法是一种基于人工智能与边缘计算技术的解决方案,专门设计用来实时、准确地统计通过特定区域的人流量。这项技术广泛应用于零售、交通、场馆管理、智慧城市等领域,以帮助管理者更好地理解顾客行为、优化资源配置、提升…

RS232/RS485信号转12路模拟信号 YL34隔离D/A转换器 4-20mA/0-5V/0-10V/0-20mA/0-25mA

特点: ● RS-485/232接口,隔离转换成12路标准模拟信号输出 ● 可选型输出4-20mA或0-10V控制其他设备 ● 模拟信号输出精度优于 0.2% ● 可以程控校准模块输出精度 ● 信号输出 / 通讯接口之间隔离耐压3000VDC ● 宽电源供电范围:10 ~ …

什么是控制,什么是控制系统?复杂的动态系统怎么被控制的?

在汽车研发中或者购买新能源汽车中,通常能提到什么EPS控制、ABS控制、智能域控等等各种说法,听起来让人觉得非常不一般,但是,这控制究竟是什么?控制的又是什么?其实很好理解! 关注我&#xff0c…

Unity Mirror 从入门到入神(一)

Mirror从入门到成神 文章目录 Mirror从入门到成神简介NetworkClientRegisterPrefabConnect (string address)Disconnect ()activeactiveHost NetworkServerSpawn 简介 Mirror是一个unity网络同步框架,基于MonoBehaviour生命周期的回调的基础上进行数值的同步&#…

HTML+CSS练习小项目——百叶窗

前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的是新手可以练习的小项目——百叶窗 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&#xff1a…

python怎么安装matplotlib

1、登陆官方网址“https://pypi.org/project/matplotlib/#description”,下载安装包。 2、选择合适的安装包,下载下来。 3、将安装包放置到python交互命令窗口的当前目录下。 4、打开windows的命令行窗口,通过"pip install"这个命令…

K8S认证 | CKA题库 + 答案 | 权限控制RBAC

1、权限控制RBAC 您必须在以下Cluster/Node上完成此考题: Cluster Master node Worker node k8s master …

如何加密电脑文件夹?重要文件夹怎么加密?

文件夹可以帮助我们管理电脑数据,而文件夹并不具有安全保护功能,很容易导致数据泄露。因此,我们需要加密保护电脑文件夹。那么,如何加密电脑文件夹呢?下面我们就来了解一下。 EFS加密 EFS加密是Windows提供的数据加密…

普通人也能创业!轻资产短视频带货项目,引领普通人实现创业梦想

在这个信息爆炸的时代,创业似乎成为了越来越多人的梦想。然而,传统的创业模式 keJ0277 往往伴随着高昂的资金投入和复杂的管理流程,让许多普通人望而却步。然而,现在有一种轻资产短视频带货项目正在悄然兴起,它以其低…

.net下使用cap实现消息异步处理

介绍 github地址 CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点。 新建项目 新建.net7web项目 安装依赖包 安装软件 安装redis和Sql Server …

MyBatis操作数据库(动态SQL)

1 动态SQL 动态SQL是MyBatis的特征之一&#xff0c;能够完成不同条件下不同的SQL拼接 1.1 <if>标签 在注册用户的时候&#xff0c;可能会有这样一个问题&#xff0c;由于注册分为两种字段&#xff1a;必填字段和非必填字段&#xff0c;如果在添加用户的时候有不确定的…

一个简单的webservice客户端demo

首先我们是客户端&#xff0c;我们要找一个服务端来配合我们调试&#xff0c;可以在这个网址里找个你喜欢的免费服务WEB服务&#xff08;Web Servicrs&#xff09;| 免费WEB服务 | 商业WEB服务 | XML Web Servicrs - WEBXML 比如下面这个查手机号归属地的&#xff1a; 我们新建…

文字游侠AI丨简直是写作神器,头条爆文一键生成稳定赚米!附渠道和详细教程(只需四步)!

在数字时代的浪潮中&#xff0c;人们不断寻求网络空间中的商机&#xff0c;期望在互联网的浩瀚海洋里捕捉到稳定的财富。随着人工智能技术的突飞猛进&#xff0c;越来越多的AI工具被融入到各行各业&#xff0c;开辟了新天地&#xff0c;带来了创新的盈利模式。 其中&#xff0c…

算法day07

第一题 30. 串联所有单词的子串 上题题意如下&#xff1a; 将w数组里面的字符串随机排列&#xff0c;只要在s字符串中找到相对应的w组成的字符串&#xff0c;则返回s中对应字符串首位元素的第一个下标&#xff1b; 有上述题意所知&#xff0c;解题思路如上一题故事&#xff0c…