上图是大家在网上看到比较多的关于数据模型或者数据集市构建的分层图——ODS、DWD、DWS和ADS。虽然有很多概念和理念,但是每个人对这几层的理解是不一样的,我们要对这几层有非常严格清晰的定义,每一层要有每层自己的特点和职责。在我们看来,简单概述地说:
ADS一定要是面向业务的,不是面向开发的,这部分数据让业务能最短的时间去理解,甚至直接使用。
DWS必须是指标,也是刚才前面讲的指标体系的一个承载体,都由DWS去做,DWS汇总基本上就是ADS的支撑。
DWD就是明细层,明细层怎么建呢?我们建议采用的是维度建模的方式,企业有维表,有事实表,维表也有很多层级维度,比如枚举维度,事实表有周期快照。当然在这里有一个点就是DWD的字段必须是可被直接理解的,不要有二义性,一旦有二义性的时候,DWS使用的时候会有问题,会导致整个上游应用都有问题。
ODS基本上大家理解应该都保持一致,就是业务数据直接同步过来。但是现在有一些架构的演变,大家喜欢在ODS做一个初步的ETL处理,这样会导致ODS的数据跟企业业务的数据不一致。其实我们建议是不这样做,原因很简单,我们要保证ODS跟业务库保持一致,这样当出现问题的时候,我们能很快定位到问题的原因。一旦做了ETL,有可能ETL的过程是有bug的,会导致两边数据不一致。所以如果企业是严格要求从业务库的数据到ODS不允许做任何的逻辑的处理,那么出现问题的时候,只能是中间件或者是其他的任何存储出了问题导致的,不应该是业务逻辑导致的。
如需转载请保留本文出处: https://zhe94.com/940.html