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

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

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

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

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.hqwc.cn/news/707271.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-ui dialog form 弹框表单组件封装

在使用 element-ui 进行后端管理系统开发时,在封装弹框表单时,遇到两个问题,这里进行简单记录: 1、问题一:点击关闭按钮及遮罩层关闭弹框时,页面报错,如下: 子组件封装:…

上海初中生古诗文大会倒计时4个月:单选题真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间,备考要趁早,因为知识点还是相对比较多的。这些知识点对于初中语文的学习也是很有帮助的。 今天我们继续来看10道选择题真题和详细解析,以下题目截取自我独家制作的在线真题集,都是…

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

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

【CSND博客纪念】“创作纪念日:从灵感迸发到小有成就——我的CSND博客创作之旅”

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

Verilog 实现 i2c 协议

在时钟(SCL)为高电平的时候,数据总线(SDA)必须保持稳定,所以数据总线(SDA)在时钟(SCL)为低电平的时候才能改变。 在时钟(SCL)为高电平…

【c语言】TIMI哥听课笔记

计算机的组成 主储存器:内存条,硬盘 CPU内部:运算器,控制器,寄存器 进制转化:二转八拆三,二转十六拆四 基本数据类型 常量:整型常量(十进制,0x十六&#x…

【Altium】AD-检查原理图中元器件未连接的Passive Pin

1、 文档目标 如何让原理图编译时找出元器件上未连接的Passive Pin 2、 问题场景 当引脚属性(Pin type)为passive时,原理图编译的默认规则是不会去检查它们是否有连接的。在实际设计过程中,经常会有导线虚连,漏连的事…

24长三角B题1-5问完整代码+15页保姆级思路已更新

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的,大家可以参考我往期的资料,所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意:(建议先下单占坑,因为随着后续我们更新资料数…

添加屏幕照片太大了怎么缩小?改变图片大小这几个方法够了

现在我们经常使用手机、平板电脑和相机拍摄照片,然而,有时候我们可能会遇到一个常见的问题就是照片的尺寸太大,难以在特定场合或平台上使用,其实不用担心,本教程将向大家介绍几个如何简单地调整图片大小的方法&#xf…

06_机器学习算法_朴素贝叶斯

1. 朴素贝叶斯的介绍与应用 1.1 朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB)是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类方法。由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数学基础,以及稳定的分类效率。NB模型所需估计的…

【Linux】线程周边001之多线程

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.线程的理解 2.地址…

狙击策略专用术语以及含义,WeTrade3秒讲解

想必各位交易高手对狙击策略不会陌生吧!但你想必不知道狙击策略的开发者为了推广狙击策略,在狙击策略基础的经典技术分析理论引入了自己的术语。今天WeTrade众汇和各位投资者继续了解狙击策略专用术语以及含义。 一.BL 银行级别(BL)是前一日线收盘的级别。时间是格…