数仓初步构建
数仓构建主要就是基于主题库的数据建立对应的专题库以供对应专题服务。
速成策略:
1.首先了解数仓相关知识
2.了解事实表与维度表的建立与实施,
3.找出业务需求然后寻找对应的解决方案。
4.后期开发顺利推进。
1.数仓
1.1首先先讲一下数仓的概念,先上个图,由图看的更加直观。
数据仓库的分层结构,有人说是基于ETL作为基础来分层的,(抽取,清洗,转换,加载)但是基于上图可能会更具体一些,主要就是贴近我们这个项目。
1.2通过这样子的一个架构明确我就可以明确自己接下的工作方向了。
从原子层(主题)的数据转换整合成对应专题库的数据,然后再加载到HBase/ElasticSearch供展现层调用数据。
1.3具体怎么做?
问题细分为两步:
第一步:是从原子层转换成对应专题库的数据,
第二步:是从专题库将数据加载到HBase/ElasticSearch供展现层使用。
但是这样想只是构建,我们最终要解决的还是业务导向,我们需要明确的是我们的业务需求。明确业务需求了就会知道HBase/ElasticSearch最终需要一些什么数据才能支撑,而知道HBase/ElasticSearch数据才会知道专题库需要些什么数据。
2.项目的实际情况架构
一、数据仓库的分层结构
1)ods层:原始数据直接同步过来;ODS作为数据缓冲层,保留的是所有的数据,理论上粒度和源系统保持一致,同时不丢数据,业务DB基本上是直接同步过来,LOG主要是做结构化。
2)维表和事实表层:该主要是将ods的数据经过规范化处理、业务逻辑处理等得到的。在该层以后使用的所有数据都必须且只能来自该层,不能再从ods层提取。
3)主题层:主要将维表和事实层的数据按照相同的业务主题进行整合得到。
4)聚合层:在事实层和主题层的基础上,按照业务需求对数据进行相应的汇总,直接面向应用层。
5)应用层:主要用于生成报表,展现给需求方。
这种是五层架构,可以根据构建的需求进行改动。
二、数据流向规范
1)原始数据需要先同步到ods层,除ods外的其他任何层都不能直接使用原始数据
2)汇总层/app层数据 不能直接依赖ods层数据
数仓分层
数仓前几层一般包括:ODS、STD、DWD
ODS是原始数据汇集层,一般把生产库的数据同步过来即可(当然要有增量数据,增量方式后面有讨论)
STD是数据标准层,针对ODS的原始数据做些基础的清洗、标准化
DWD常做为数据描述层,通常对STD层的数据按照主题、或者大的业务分类,进行数据整合,常包括数据合并拆分(表合并、分类)、数据计算(简单的计算逻辑生成需要的数据)
数仓建设完成后,通过DWD层,对使用人员提供服务。使用人员可以通过DWD层进行业务专题库建设也就是维表层建设或者数据建模,进行数据轻度汇总再对外使用等等。
3.数据集市
这边再补充一下数据集市构建的简单信息:
数据集市跟数仓其实是有很大的区别的,数据集市(Data Mart)是数据仓库的一个访问层,用于从数据仓库抽取相关的数据给用户,数据集市是数据仓库的一个子集,通常面向特定的业务线或者团队。简单地说,我认为数据仓库包含多个主题域,数据集市仅仅是多个主题域中的一个。