在我没有进互联网之前,我一直以为数据仓库是所有企业进行数据资产管理的必备工作,但直到我去了很多家企业搞数据之后才发现,原来并不是所有的企业都适合做数据仓库,更不要说数据中台了。
很多企业现在做数据仓库,完全就是在瞎搞!
我做过一些公司的数据工作,我发现国内很多企业现在基本上都是“数仓+数据分析平台”的标准配置,前端用数据分析平台进行数据的处理和加工,然后用可视化工具进行数据展示,后台构建数据仓库进行数据存储和ETL处理。
但是大多数企业的ETL过程都非常简单,而且无论是哪种数据仓库,都不会是一劳永逸的,随着业务的发展和变化会有调整是必然的,需要保证的是基础层的稳定、核心指标口径的稳定,前者靠建模能力,后者靠业务与行业理解能力。
有数据仓库和没有数据仓库的区别
在没有数据仓库的时候,企业里的文件和数据基本上都是对接业务系统,这样就会造成数据的冗乱。而数据仓库就是为了解决这个问题,数仓是一个面向主题的、集成的、相对稳定的,反应历史变化的数据集合。
数据分析中的工作最重要的就是数据处理工作,由于数据分析对数据质量、格式的要求比较高,对数据的理解也必须非常深刻,使得数据契合业务需求也要一定的过程,根据我做数据分析的经验,在整个数据分析流程中,用于数据处理的时间往往要占据70%以上。
所以,如何高效、快速地进行数据理解和处理,往往决定了数据分析项目的进度和质量。
而数据仓库具有集成、稳定、高质量等特点,基于数据仓库为数据分析提供数据,往往能够更加保证数据质量和数据完整性。
数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型,一般的来说,我们数据仓库模型分为几下几个层次,如下图所示。
数据仓库模型
通过上面的图形,我们能够很容易地看出在整个数据仓库得建模过程中,我们需要经历一般四个过程:
- 业务建模,生成业务模型,主要解决业务层面的分解和程序化。
- 领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领域概念模型。
- 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化。
- 物理建模,生成物理模型,主要解决,逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题。
因此,在整个数据仓库的模型的设计和架构中,既涉及到业务知识,也涉及到了具体的技术,我们既需要了解丰富的行业经验,同时,也需要一定的信息技术来帮助我们实现我们的数据模型,最重要的是,我们还需要一个非常适用的方法论,来指导我们自己针对我们的业务进行抽象,处理,生成各个阶段的模型。
一、 数据理解
数据仓库模型
我们都知道,数据仓库是面向主题的,所以其自身与业务结合就相对紧密和完善,更方便数据分析师基于数据理解业务。而数据仓库是有很多的主题组成,包括了很多的数据。当我们需要对数据进行分析的时候,如果理解数据仓库的模型,数据理解也就水到渠成了。
第二、数据质量
我们在做数据分析的时候要求数据是干净、完整的,而数据仓库已经对源系统的数据进行了业务契合的转换,以及脏数据的清洗,这就为数据分析的数据质量做了较好的保障。
第三、数据跨系统关联
数据跨系统关联数据仓库的一个简单架构,各业务源系统的数据经过ETL过程后流入数据仓库,当不同系统数据整合到数据仓库之后,至少解决了数据分析中的两个问题:
第一, 跨系统数据收集问题,在金融分析中同一个客户的储蓄交易和理财交易我们在同一张事实表就可以找到;
第二, 跨系统关联问题,进行数据整合时,总是需要找到共同点来关联来自不同系统的信息,而数据仓库在ETL过程中就会整合相关客户信息,完美解决跨系统关联问题。
四、 如何建设数据模型
建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。
1、数据仓库数据模型架构
数据仓库的数据模型的架构和数据仓库的整体架构是紧密关联在一起的,我们首先来了解一下整个数据仓库的数据模型应该包含的几个部分。
从上图我们可以看出,整个数据仓库的数据模型可以分为大概 5 大部分:
- 系统记录域(System of Record):这部分是主要的数据仓库业务数据存储区,数据模型在这里保证了数据的一致性。
- 内部管理域(Housekeeping):这部分主要存储数据仓库用于内部管理的元数据,数据模型在这里能够帮助进行统一的元数据的管理。
- 汇总域(Summary of Area):这部分数据来自于系统记录域的汇总,数据模型在这里保证了分析域的主题分析的性能,满足了部分的报表查询。
- 分析域(Analysis Area):这部分数据模型主要用于各个业务部分的具体的主题业务分析。这部分数据模型可以单独存储在相应的数据集市中。
- 反馈域(Feedback Area):可选项,这部分数据模型主要用于相应前端的反馈数据,数据仓库可以视业务的需要设置这一区域。
通过对整个数据仓库模型的数据区域的划分,我们可以了解到,一个好的数据模型,不仅仅是对业务进行抽象划分,而且对实现技术也进行具体的指导,它应该涵盖了从业务到实现技术的各个部分。
2、数据仓库建模阶段划分
我们前面介绍了数据仓库模型的几个层次,下面我们讲一下,针对这几个层次的不同阶段的数据建模的工作的主要内容:
(1)业务建模,这部分建模工作,主要包含以下几个部分:
- 划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。
- 深入了解各个业务部门的内具体业务流程并将其程序化。
- 提出修改和改进业务部门工作流程的方法并程序化。
- 数据建模的范围界定,整个数据仓库项目的目标和阶段划分。
(2)领域概念建模,这部分得建模工作,主要包含以下几个部分:
- 抽取关键业务概念,并将之抽象化。
- 将业务概念分组,按照业务主线聚合类似的分组概念。
- 细化分组概念,理清分组概念内的业务流程并抽象化。
- 理清分组概念之间的关联,形成完整的领域概念模型。
(3)逻辑建模,这部分的建模工作,主要包含以下几个部分:
- 业务概念实体化,并考虑其具体的属性
- 事件实体化,并考虑其属性内容
- 说明实体化,并考虑其属性内容
(4)物理建模,这部分得建模工作,主要包含以下几个部分:
- 针对特定物理化平台,做出相应的技术调整
- 针对模型的性能考虑,对特定平台作出相应的调整
- 针对管理的需要,结合特定的平台,做出相应的调整
- 生成最后的执行脚本,并完善之。
从我们上面对数据仓库的数据建模阶段的各个阶段的划分,我们能够了解到整个数据仓库建模的主要工作和工作量,希望能够对我们在实际的项目建设能够有所帮助。