HI,下午好,新媒易不收取任何费用,公益非盈利机构
24小时服务热线: 4000-162-302
请扫码咨询

新媒易动态

NEWS CENTER

数据仓库都有哪些工作流程,以及数据产品经理在各个流程中扮演的角色

2021-02-26

数据仓库的搭建毫无疑问完完全全是开发工程师的活,随着业务的发展与细分,对产品经理提出了更高的要求,特别是数据产品经理岗位的出现,产品经理懂技术已经是大势所趋。

今天我们就来聊聊数据仓库都有哪些工作流程,以及数据产品经理在各个流程中扮演的角色。

01 数据仓库的重要性

1. 为什么要搭建数据仓库

这个问题翻译过来就是,数据仓库能给我们带来什么价值。

想象一下,有一天你需要分析一下某个地区哪种商品卖的最好,这时候是不是要通过层层审批,审批完成后开发在各个系统中通过接口导出数据,估计这时候已经过去了几天时间,所以这个效率是非常低下的;而有了数据仓库,我们就可以自助取数、分析。

数据仓库起到的作用就是:汇总数据、整合数据、加工数据并最终输出能力。

2. 数据产品为什么要懂数据仓库

数据仓库最终是要赋能的,而赋能则需要结合业务,开发工程师往往不关心具体业务,所以完全交给开发工程师开发出来的数据仓库可能不能很好的支持业务;这就需要数据产品经理参与进数据仓库的开发中,而参与进来就必须要懂数据仓库。

02 构建数据仓库

数据仓库的基本架构如下图:


1. 数仓需求分析

数据产品经理在接到数据需求后,需要分析这个需求能不能实现,怎么实现,需要哪些资源;针对需求进行统筹规划,避免为了实现特定需求而开发,尽量提供更丰富的数据以满足不时之需。

2. 数据源梳理

数据源的梳理也是数据产品的一个工作,需要梳理出整个公司内都有哪些数据源,并争取到数据源对应持有者的支持,了解数据源的格式以及含义。

常见的数据源有ERP系统、CRM系统、支付系统等等内部系统数据,以及产品埋点的行为数据数据,也可能有一些外部的文档数据。

3. 数据同步汇总

取得数据持有方的支持后,将各数据源同步到数据仓库中的ODS层,该层和源数据是同构的,即在ODS层将数据源的数据原封不动的存储起来,以便后续追溯数据问题;这一层数据粒度是最细的,而且这层的数据保存时间最久。

4. 数仓建模

数据仓库的设计模式分两种:自上而下、自下而上,两种模式对应的方法论分别是Inmon模式和Kimball模式。

1)Inmon模式

Inmon是一种自上向下的设计模式,即先构建数据仓库再从数据仓库中衍生出数据市场。

数据仓库的数据来源往往是异构的,不同数据源对应不同规则的数据清洗,必须先通过ETL将数据进行处理才能放入数据仓库层,再根据需要组合数据输出到数据集市层。

Inmon是以数据源为导向,而数据源会经常变化,所以相对于维度建模,实体建模更适合Inmon。

2)Kimball模式

Kimball 是一种自下向上的设计模式,即先构建数据集市再汇总到数据仓库再到数据源。

Kimball模式的数据源往往是已有的几张表,数据源较为稳定但表与表之间的关系仍待梳理。Kimball模式在得到数据后根据目标先拆分出不同的表需求再通过ETL进入到数据仓库层,Kimball使用维度建模。

对比两种模式可发现,Inmon是规划型而Kimball是享乐型,Inmon会提前规划好,开发难度较大周期较长,但是一旦开发好后维护起来相对容易。

Kimball强调先满足需求后续再规划,所以Kimball能够快速满足需求,适合敏捷开发,同时导致的问题是后期维度难度较大;在互联网行业中需求往往是快速变化的,因此Inmon好不容易花大力气实现的需求往往实现后已经意义不大了;相反Kimball不考虑对数据仓库架构做过多复杂的设计,看起来不规范但是用起来却很实用,成了互联网公司建模的主流模式。

5. ETL

ETL的工作将贯穿于整个数据仓库的建立过程。

ETL是对数据的抽取、转换、加载的简称;它是指将关系型数据库中的数据抽取出来,并将不同数据源的数据按规则进行转化和整合,最终加载到数据仓库中。

在这一系列的操作中将会对元数据的数据格式,拼写错误,多余字段以及缺失值等进行处理,将分散、零乱、标准不统一的数据整合到一起,使数据达到允许加载到数据仓库的标准。

6. 数据仓库分层

存储在ODS层的数据显然是不能直接使用的,要经过层层处理;如果一步到位计算出各类指标将来业务变化的时候又要重头开始开发一遍,因此数据仓库分层是很有必要的。

数据仓库分层主要有以下几点好处:

  • 支持复用:数据在每一层进行特定的处理,保留了大量的中间层数据,将来业务变更的时候可以从已有的中间层数据重新计算而不需要重头再来,大大地减少了重复开发;
  • 便于管理使用:通过分层可以看到数据在整个仓库中的流转,方便掌握数据的生命周期,每一层负责特定的职责,便于使用者理解使用。

数据仓库分层通常分为以下三层:DWD、DWM、DWS。每一层的功能如下:

1) 数据明细层:DWD(Data Warehouse Detail)

DWD层直接与ODS层接触,ODS层的数据经过ETL后流向该层,一般保持和ODS层一样的数据粒度。

DWD层的主要工作有以下几点:

① 数据质量保证

ODS层的异常值、缺失值等等数据问题在这一层中解决,视具体情况进行数据矫正或者补充默认值或者直接丢弃。

② 维度退化

在本层同时也要开始为后续的数据使用做准备,之前维度建模的事实表和维度表后续使用的话需要进行大量的事实表维度表关联,显然效率是非常低下的;在DWD层将一些维度退化至事实表中以减少关联,即提前关联好各维度以便后续使用。

③ 数据聚集

ODS层的数据来源各种各样,有些数据属于同一个主题的但是来源不同,因此存在于不同表之中,需要将不同来源但是属于相同主题的数据汇总到同一张表之中。

2)数据中间层:DWM(Data WareHouse Middle)

DWM层的作用是进行数据聚合,即计算出一些公共指标,生成一系列中间表,方便后续使用方直接取数,本层的数据聚合保留较细的维度;这一层视具体业务而定,如果业务比较简单可以不需要这一层。

3)数据服务层:DWS(Data WareHouse Servce)

DWS层即我们熟知的数据集市或者大宽表。本层将DWM层的指标数据按主题进行汇总,生成一些字段较多的大宽表,即将各个指标都放在一张表中,方便使用方直接从表里面取数不需要进行任何计算。

相关推荐