02_数仓分层问题优化

上文回顾:

首先来回顾一下我们数仓的分层结构:

02_数仓分层问题优化_第1张图片
ods层:ods层就是将业务库的源表,经过清洗后保存起来。当然,用户的行为日志经过结构化后,也可以放在ods层。

dw层:dw层是面向业务过程的明细表,比如:用户下单,采购入库会分别对应一张表。

dm层:而dm层是面向分析对象的汇总表,分析对象就是指:商品,门店,仓库,站点。比如:如果分析对象是商品,dm层就会有一张商品的每日汇总表,记录这个商品每一天卖了多少件这样子。

从上文中,也分析出了这套分层架构存在的问题,简单来说,就是dw层的明细可以复用,但是dm层的汇总数据不能复用

本文开始:

因此,这套架构其实再加一层ADS(应用数据层)就可以了。

02_数仓分层问题优化_第2张图片
dw层就可以存放复用的明细数据:比如,可以复用的下单的事务事实表,所有商品的下单明细都放到这张表中。这一层是可以复用的,因此肯定不会过滤财务中心报表中的测试商品C和测试商品D
在这里插入图片描述
dm层就可以存放复用的汇总数据:比如:每个商品的汇总数据都放到这张表中。这一层也是可以复用的,不会因为不同的业务而入侵和破坏,因此肯定不会过滤财务中心报表中的测试商品C和测试商品D

在这里插入图片描述
ads层(应用数据层):这一层面向应用。

应用可能有些抽象,举例来大家来说明。上文说的财务中心报表和订单中心报表就是2个不同的应用。

财务中心的报表,只要对dm层的汇总数据中,过滤掉财务中心后台配置的测试商品C和测试商品D就可以了。

(财务中心的汇总表,稍加过滤)
在这里插入图片描述
而订单中心的报表,只要将dm层的汇总数据直接拿过来就可以使用了。

(订单中心的汇总表,不需要过滤)
在这里插入图片描述
下面用一张图,来个大家直观地感受一些ads层。

02_数仓分层问题优化_第3张图片
大家可以想一下这个ads层带来的好处,如果以后物流中心(和订单中心,财务中心平级,也是公司另外一个子系统),有需要一个报表,也是商品汇总表,它要过滤掉【商品销售总金额 <= 1000的数据】。

此时,我们只需要在ADS层再新建一张表,对dm层的商品汇总表过滤掉那些【商品销售总金额 <= 1000的数据】。

02_数仓分层问题优化_第4张图片
到这里为止,不知道大家有没有感受到,我们已经不需要进行烟囱式的开发了。开发物流中心这个报表的同学,完全不需要关心ods层和dw层的细节,它只需要知道dm层已经有一个商品汇总表,拿过来,过滤掉【商品销售总金额 <= 1000的数据】就完事了

开发物流中心这个报表的同学感到很爽好不好,他很快就把这个需求完成了,不需要烟囱式的开发,即不需要从dw,dm,ads层这样从下到上的重头开发

每来一个新需求,你需要判断你要做的东西,是个性化的还是需要复用的?

如果是可以复用的,就需要沉淀到dw和dm层;如果是个性化的,就在ADS层处理,不入侵和破坏dw和dm层,保持住dw和dm层的可复用性

你可能感兴趣的:(数据仓库)