ETL 的英文全称叫做 Extraction 抽取,Transformation 转换,Loading 加载。
抽取就是指将数据从一个数据源、或者多个数据源抽取过来的动作,数据源有可能是关系型数据库,也可能是文本文件,或者一个程序的API接口。
转换就是指数据的清洗、合并、拆分、加工、数据逻辑计算处理的过程,通常会按照一定的业务逻辑规则进行计算,最后转换成符合业务模型、分析模型的规范性的数据。简单来说,不管是大数据、小数据,都是将不规范的、不可分析的转换成规范的、可分析的数据。
加载就是将转换的结果按照分析模型需要的格式将数据写入到目标表,这些目标表就是业务自助分析的数据来源,通过是按照一定建模的方式来组织的,不管是星型分析模型还是雪花型分析模型都是的。
这就是在 BI 中我们通常定义的ETL处理过程。
也有另外的一种ETL,不是面向数据分析的,而是纯数据的处理,比如数据库的数据迁移,多数据源的数据迁移,这是纯数据的开发,用途不一定是面向BI,可能是业务系统之间的数据转换处理。像我们之前的一个很大的项目,原有的ERP是用Cobal语言开发的,后面也是因为业务的发展需要使用新的ERP系统,因此就需要把原有ERP的文件格式类型的数据按照新的业务规则、新的ERP对业务表的定义将原有系统的数据抽取到新的平台,这个过程处理非常的复杂。
ETL工程师技能要求
1. 数据仓库和ETL工具:熟悉数据仓库的概念和设计原则,掌握常见的ETL工具,如Informatica、Talend、DataStage等,能够设计和实现ETL流程。
2. 数据建模:了解数据建模的基本原理,熟悉维度建模和关系型建模,能够设计和优化数据模型。
3. SQL和数据库:熟练掌握SQL语言,能够编写复杂的SQL查询和优化数据库性能,熟悉常见的关系型数据库,如Oracle、MySQL、SQL Server等。
4. 编程语言:具备至少一种编程语言的基本功底,如Python、Java、Scala等,能够编写ETL脚本和数据处理程序。
5. 数据质量管理:了解数据质量管理的基本概念和方法,能够设计和执行数据质量检查和修复流程。
6. 数据分析和报表:具备基本的数据分析能力,能够使用数据分析工具和报表工具,如Tableau、Power BI等,进行数据可视化和报表开发。
7. 系统集成和数据集市:熟悉系统集成的原理和方法,能够设计和实现数据集市,将不同系统的数据集成到数据仓库中。
8. 问题解决和调优:具备良好的问题解决能力,能够分析和解决ETL过程中的问题,优化ETL性能。
9. 基础知识和学习能力:具备扎实的计算机基础知识,包括操作系统、网络等,具备快速学习新技术和工具的能力。