今天跟大家聊一聊数仓为什么分层?
01经典的数仓分层
首先跟大家聊一个经典的数仓分层结构,主要包括ODS、DWS、DW、APP四层。
ODS:抽取的原始业务数据,结构一般和原始业务数据库表结构或者抽取的业务日志数据结构保持一致。一句话:从业务系统增量抽取,数据不做清洗转换,与业务系统数据模型保持一致。
DWS:根据ODS层,增加一些维度信息,过滤一些异常数据。为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为未来分析类需求的扩展提供历史数据支撑。
DW:模型层,根据DWS层数据,按各个业务需求,以某个维度ID进行粗粒度汇总聚合。此层一般会根据数仓涉及的业务发展或者主数据的建立等,抽象出一些公用的聚合汇总模型
APP:应用层/指标层/报表层,每个公司的叫法不一样,一般指根据特定的某个应用或者报表进行的数据指标开发汇总。
02数仓为什么分层
那么为什么数据仓库会有分层呢?
每多一层不就会多一些开发工作吗?还会经常有多层数据重复?不分层可不可以?
也许上面这些问题会困扰你,可能还会有人说,我来公司的时候已经有开发规范了,不分层不行!
其实数据仓库分层原因可以概括为以下4个方面:
03数仓分层的模板
我们可以看到现在网上有很多数仓建模的规范,那么到底有没有一套万能的规范模板,直接拿来就能用呢?
每个公司的业务发展都不尽相同,不能完全套搬一些规范,在建立数仓之前是要对自己公司的业务进行梳理,包括业务种类、数据量、需求量等,也许公司的数据量本来就不大,而且业务比较单一,那么明细层(DWS)可以不要呀,直接通过原始数据层来建立模型汇总层。
规范是给大家拓展思路参考的,数仓的开发建设本来就是和业务强关联的。开发效率提升了,分析人员用着模型说好了,业务应用人员用着说好了,那就可以了。