备选标题:
数据分层,不止分层那么简单!
数据为什么要分层?三招搞定多源异构数据
数据又多又乱,用的时候:
别头疼了!数据分层就是解决这些问题的“法宝”。
简单说,它就是:
给数据建个清晰有序的“家”,让每一类数据都有固定的位置和职责。
今天,我就带大家拆解数据分层最核心的三大层:
看看它们是如何分工协作,让你的数据变得又好找又好用!
简单来说,就是把从现实世界里收集到的有用信息,用更合理的方式整理清楚。这样遇到问题的时候,就能更快地找到解决办法。
你想啊:
要是一堆数据乱糟糟堆着,找的时候就得翻来翻去,用的时候也不顺畅。
不管是处理什么数据,有条理都是最基本的要求。
因为:
数据一旦有了条理,查找的时候不用浪费时间,使用的时候效率也能提高。
这就是数据分层最根本的作用:减少不必要的成本,提升处理效率。
刚开始接触数据分层的时候,很多人都会有这个疑问。
就像有人会问:
“为什么要做数据仓库”“为什么要做元数据管理” 一样,这些问题本质上都是在问 “做这件事的意义是什么”,接下来咱们就专门说说数据分层。
理想状态下:
咱们肯定希望数据能规规矩矩地流转,从产生到不用的整个过程都清清楚楚,哪部分数据依赖哪部分,层次怎么分,一眼就能看明白。
可现实却是:
数据体系往往不是这样。
很多时候:
数据之间的依赖关系乱得很,层次也分不清楚,甚至还会出现 A 依赖 B、B 又依赖 A 的循环情况,到时候不管是查数据还是改数据,都特别麻烦。
所以:
数据分层其实就是给咱们一套能实际操作的方法,让数据体系能更有条理。
当然了,数据分层不能解决所有数据问题,但能帮咱们解决不少关键问题,好处还是很明显的。具体来说,有这些好处:
分层处理的时候,每一层都能对数据做清洗和检查。
具体操作是:
通过分层设置多道检查环节,及时拦截错误,避免问题累积,从流程上保障数据质量。
比如:
这一层发现数据有错,马上就能改,不用等问题传到后面的层。
这样就能:
保证数据是准的、前后一致的。
汇总好的数据,单独放在一层,要查总数的时候,直接去那一层拿就行,不用再从最原始的数据里一点点算,速度自然就快了。
具体操作是:
减少查询时需要处理的数据量和计算步骤,缩短数据查找和计算的路径,从而提升性能。
比如:
在使用 XML 解析算子时,可以通过数据集成平台FineDataLink分层解析数据,并通过其他算子进行拼接。对于 API、WebService、OData 接口中响应数据返回的 XML 格式数据、来自 XML 文件的数据,通过FineDataLink直接解析为行列格式数据,方便后续加工存储。
3.易于维护
每一层数据都有自己要负责的事,处理逻辑也很明确。
具体操作是:
明确各层职责,把复杂的维护工作拆分成针对每一层的简单工作,降低维护难度。
比如:
哪一层出了问题,就针对性地去处理这一层,不用把整个数据体系都翻一遍,维护起来就省事多了。
如果想改某一层的数据,只要把这一层和上下层的衔接处理好,基本不会影响到其他层。
具体操作是:
各层相对独立,层与层之间通过固定的方式衔接,局部修改不会引发连锁反应,提升了数据体系的适应性。
比如:
要调整 ODS 层的数据格式,只要保证传给 DWD 层的数据是对的,DWD 层及以上的部分就不用跟着改,这样改起来就灵活多了。
分层之后,数据的结构更清晰,想从不同角度分析数据就很方便。
比如:
分析一笔销售数据,既可以看不同地区的情况,也可以看不同时间段的情况,还能看不同产品的情况,这些都能在分层的基础上实现。
合理分层之后,同一批数据不用重复存在好几层里。
具体操作是:
通过规划数据的存储位置,避免重复存储,提高存储空间的使用效率。
比如:
客户的基本信息,在需要的层里直接引用就行,不用每层都存一份,这样就能节省存储空间。
数据分层的时候,会规划好历史数据怎么存、存多久、怎么调出来用。
这样一来:
想分析过去几个月或者几年的数据变化,就能很方便地找到对应的历史数据,不用到处找。
具体操作是:
为历史数据设定明确的管理规则和存储位置,让历史数据的调用和分析有章可循。
数据量总会越来越大,分层的体系就能跟着慢慢扩展。
具体操作是:
分层形成的模块化结构,让体系可以按需逐步扩展,适应数据量增长的需求。
比如:
数据多了,可以在现有层次基础上加一层专门处理新增数据的,或者调整某一层的结构,不用把整个体系推翻重来,这样扩展起来就容易多了。
为了达到上面说的这些效果,一般我们会把数据分成三层:
这三层各司其职,一步步把数据处理好。
接下来,我就把各层的功能给大家详细拆解一下:
作为数据的入口,直接从各种业务系统里拿过来的。
比如:
都是从这些地方直接获取的。
这一层的数据:
基本能保持业务系统里的数据原样,不过拿过来之前得先做些清洗和检查,确保能用。
里面的表一般分两种:
而且:
这是整个分层里最细的一层数据,从业务系统拿过来后,简单处理一下就放在这儿。
这一层是核心,又能分成三个小层:
1.数据明细层(DWD)
这一层的数据和 ODS 层差不多细,不过会更注重数据质量,有问题的会在这里处理掉。
而且:
为了用起来方便,会把一些相关的维度信息直接放进事实表里,同一类主题的数据也会汇总到一张表里。
比如:
订单表会把客户的一些基本信息加进去,这样查订单的时候就不用再去关联客户表了。
这样做的好处:
在保留明细数据的基础上,优化数据结构,提升数据可用性,为中间层处理提供清晰的数据源。
2.数据中间层(DWM)
这一层是在 DWD 层数据的基础上做些简单的汇总。
比如说:
用户每天登录多少次,不用每次用的时候都从 DWD 层的明细数据里算,在这里提前算好存起来,后面再用直接拿就行。
这样做的好处:
减少重复计算,提高那些常用指标的复用性。
具体操作是:
对高频使用的指标提前计算并存储,减少重复劳动,提升后续处理的效率。
3.数据服务层(DWS)
这一层也叫宽表或者数据集市,是按业务来分的,比如专门处理流量数据的表、专门处理订单数据的表。
一般来说:
这些表字段多,但数量不多,业务查询的时候、做 OLAP 分析的时候都能用。
所以:
这一层的数据是把 DWM 层的多个中间表拼起来的。
否则:
直接从 DWD 层或者 ODS 层算,计算量太大,而且能分析的角度也少。
具体操作是:
整合中间层数据,形成面向业务的综合数据集,简化业务查询和分析的流程。
注意点:
如果不好区分中间层和服务层,也可以把 DWM 层去掉,数据都放在 DWS 层。
是给数据产品和做数据分析的人用的。
存储位置:
咱们平时看的各种报表数据,基本都在这一层。
最后补充一个:维表层(Dimension)
这一层专门存维度数据,分两种:
具体操作是:
单独存储维度数据,与业务数据分离,方便维度信息的统一管理和复用。
说到这里,可能有小伙伴好奇:
这些问题,估计不少刚开始接触数据分层的同学都会琢磨,对吧?
所以下面,我就从这几个角度,好好聊聊数据分层到底是怎么划分的。
越往上的层,数据越好用。
比如:
大部分人都希望 80% 的需求能靠 20% 的表来支持。
说白了:
结合上一点来说,就是 80% 的需求,都要用对业务友好的方式来支持,不能直接把原始数据扔给用的人。
越往上的层,数据汇总得越厉害。
比如:
所以从这一点来看,数据分层也是按数据汇总的程度来分的。
说到底,数据分层就是要做到:
最后,让整个数据体系更有序、更高效地运转。
通过ODS(原始数据入口)、DW(核心加工区)、ADS(直接应用层),这三大核心层的合理划分与紧密配合,不仅能让你告别数据混乱,更能大大提升数据质量、处理速度和维护效率。
现在就动手实践分层设计,解锁数据的强大潜能吧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。