一、概念
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
1.抽取:数据抽取是从数据源中抽取数据的过程。实际应用中,数据源较多采用的是关系数据库。
a.全量抽取:全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的ETL工具可以识别的格式。
b.增量抽取:只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。
2.清洗:针对系统的各个环节可能出现的数据二义性、重复、不完整、违反业务规则等数据质量问题,允许通过数据抽取设定的数据质量规则,任务是过滤不符合条件或者错误的数据。
3.转换:针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过ETL工具可视化拖拽操作可以直接使用标准的内置代码片段功能、自定义脚本、函数、存储过程以及其他的扩展方式,实现了各种复杂的转换,并且支持自动分析日志,清楚的监控数据转换的状态并优化分析模型。
4.转换:将经过转换的数据装载到数据仓库里面,可以通过直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。
二、数据仓库ETL工具
五种ETL工具(SEDWA、kettle、OracleGoldengate、informatica、talend)
- Datastage
是使用高级语言进行开发ETL服务器的代表。使用JAVA进行开发E/T/L的整个流程,同时支持平行添加服务器提升处理效率的方法。 - Powercenter
与Datastage类似,但元数据更加开放,存放在关系数据库中,可以很容易被访问。再有Powercenter不能像Datastage运行多个实例,且不支持定制开发,参数控制更乱。 - Automation
基于Teradata的TD数据库的ETL调度框架。其ETL流程是使用DSQL的存储过程进行开发,利用TD数据库的海量数据处理能力,也具有一定的平行扩展能力。