ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
详细的ETL流程
从底层向上看
- 所有的数据都来源于业务系统、埋点,日志,但是这些数据很多是用不到的。比如我只需要分析上个月的不同地区、不同年龄段人群的平均下单金额,那么就不需要非相关的数据了。
- 所以第二步,我们只需要抽取需要的数据,这个过程即ETL,抽取我们需要的数据作为备份数据,这个过程是实时的,数据的结构与业务系统一致,可以说是完全一摸一样。我们把这个备份数据叫做ODS数据层。
这里其实是有些小问题的,比如某用户下单了,我们实时的存进ODS,但是过了一个小时,他又退单了,这个时候如何做呢,可以直接修改ODS吗?是不行的,为什么?因为ODS一般是用hadoop去做的,那么修改所耗费的资源很大,数据量很多的时候就会很消耗资源。哪怕不是用hadoop的技术去实现的,比如MongoDB,修改的话也是很麻烦。所以一般都用折中的方式,在每写一个数据时,都会添加额外的时间维度、时间刻度,数据来源。这里的ETL需要实时抽取。 - DW层 数据模型层 抽取到ODS后,一般采用每天统一做处理,将数据根据分析目的去做一个数据集市、或者数据仓库(多个数据集市联合)。
数据集市(模型层)由事实表和维度度构成,建立事实部和维度表之后,数据集市或者数据仓库就初步建成了,接下来需要对这些数据做汇聚就行了。
数据中心整体架构:
- DB 是现有的数据来源(也称各个系统的元数据),可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。
- ETL的是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程:
- Extract,数据抽取,也就是把数据从数据源读出来。
- Transform,数据转换,把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗,清洗掉噪音数据。
- Load 数据加载,把处理后的数据加载到目标处,比如数据仓库。
- ODS(Operational Data Store) 操作性数据,是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性,而且ODS的数据周期一般比较短。ODS的数据最终流入DW。
- DW (Data Warehouse)数据仓库,是数据的归宿,这里保持这所有的从ODS到来的数据,并长期保存,而且这些数据不会被修改。
- DM(Data Mart) 数据集市,为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据。面向应用。
网友评论