为什么要分层
- 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单,且方便定位问题..
- 减少重复开发:规范数据分层,通过中间层的数据,能够减少重复的计算,增加一次计算结果的复用性,即节省了大量的计算时间.
- 隔离原始数据:数据的敏感,将原始数据层和统计数据进行了解耦,比如原始数据有一些数据比如身份证信息不方便访问的话,可以打上***标识,类似于脱敏处理,另外还可以通过增加用户权限,原始数据层只允许个别用户访问,这样也可以起到了保护数据信息的作用.因为原始数据比如身份证信息等都能够拿到.
常见的分层
数仓中分层一般常见的都是4层或者5层
4层分为ODS层,DWD层,DWS层,APP/ADS层
5层分为ODS层,DWD层,DWS层,DWT层,APP/ADS层
4层和5层分层:
##############4层4层4层#######################
保险行业
ODS(Operation Data Store)层: 原始数据层(和业务表结构一致),存放原始数据,直接加在原始数据日志,数据,保持数据样貌不过改变.
DWD(Data warehouse detail)层: 明细层(业务表结构一致),对ODS层数据进行数据清洗(脏数据,空值处理(比如原本是空的,放一个默认值)等)
则根据【主题】定义好【事实表】和【维度表】,保存最细粒度的数据,
可以等价于业务数据库的表,因为他会把每天的增量汇总到一起,他把ODS的数据汇集到一起的
<DWD层是真正发力的层,DWD层数据就全了.>
DWS(Data Warehouse Service层: 轻度汇总层,以DWD层为基础进行轻度汇总,做成宽表。
ADS层/APP层(Application Data Store): 数据应用层,为各种统计报表提供数据
##############5层5层5层#######################
电商行业
ODS(Operation Data Store)层:原始数据层(和业务表结构一致),存放原始数据,直接加在原始数据日志,数据,保持数据样貌不过改变.
DWD(Data Warehouse Detail):明细数据层,对ODS层数据进行清洗,去除空值,脏数据,超出极限范围的数据,脱敏等,保存明细数据,一行信息代表依次业务行为,比如一次下单
DWS(Data Warehouse Service):服务数据层,按天进行轻度汇总,一行数据代表一个主题对象一天的汇总行为,例如一个用户一天下单次数.
主题:比如用户主题,商品主题,订单主题
主题对象:不同主题有不同的主题对象,以用户主题为例,一个主题对象就是一个用户
DWT(Data Warehouse Topic):数据主题层,以DWS为基础,对数据进行累积汇总,一行信息代表一个主题对象的累积行为,例如一个用户从注册那天到现在总的下单次数
ADS(Application Data Store):数据应用层,为各种统计报表提供数据
其实具体的分层数量以及命名规则,完全是需要根据公司业务复杂程度来定,并不是层数越多越好,层数越多,伴随着数据冗余越大,层数越少,伴随着大量的重复计算,所以分层数量一般根据业务复杂度来看