数据ETL是指啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据ETL是指啥相关的知识,希望对你有一定的参考价值。

对于做过 BI 开发的朋友,ETL 并不陌生,只要涉及到数据源的数据抽取、数据的计算和处理过程的开发,都是 ETL,ETL 就这三个阶段,Extraction 抽取,Transformation 转换,Loading 加载。

从不同数据源抽取数据 EXTRACTION ,按照一定的数据处理规则对数据进行加工和格式转换 TRASFORMATION,最后处理完成的输出到目标数据表中也有可能是文件等等,这个就是 LOADING。

再通俗一点讲,ETL 的过程就跟大家日常做菜一样,需要到菜市场的各个摊位买好菜,把菜买回来要摘一下,洗一洗,切一切最后下锅把菜炒好端到饭桌上。菜市场的各个摊位就是数据源,做好的菜就是最终的输出结果,中间的所有过程像摘菜、洗菜、切菜、做菜就是转换。

在开发的时候,大部分时候会通过 ETL 工具去实现,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微软 SQL SERVER 里面的 SSIS 等等,在结合基本的 SQL 来实现整个 ETL 过程。

也有的是自己通过程序开发,然后控制一些数据处理脚本跑批,基本上就是程序加 SQL 实现。

哪种方式更好,也是需要看使用场景和开发人员对那种方式使用的更加得心应手。我看大部分软件程序开发人员出身的,碰到数据类项目会比较喜欢用程序控制跑批,这是程序思维的自然延续。纯 BI 开发人员大部分自然就选择成熟的 ETL 工具来开发,当然也有一上来就写程序脚本的,这类 BI 开发人员的师傅基本上是程序人员转过来的。

用程序的好处就是适配性强,可扩展性强,可以集成或拆解到到任何的程序处理过程中,有的时候使用程序开发效率更高。难就难在对维护人员有一定的技术要求,经验转移和可复制性不够。

用 ETL 工具的好处,第一是整个 ETL 的开发过程可视化了,特别是在数据处理流程的分层设计中可以很清晰的管理。第二是链接到不同数据源的时候,各种数据源、数据库的链接协议已经内置了,直接配置就可以,不需要再去写程序去实现。第三是各种转换控件基本上拖拉拽就可以使用,起到简化的代替一部分 SQL 的开发,不需要写代码去实现。第四是可以非常灵活的设计各种 ETL 调度规则,高度配置化,这个也不需要写代码实现。

所以在大多数通用的项目中,在项目上使用 ETL 标准组件开发会比较多一些。

ETL 从逻辑上一般可以分为两层,控制流和数据流,这也是很多 ETL 工具设计的理念,不同的 ETL 工具可能叫法不同。

控制流就是控制每一个数据流与数据流处理的先后流程,一个控制流可以包含多个数据流。比如在数据仓库开发过程中,第一层的处理是ODS层或者Staging 层的开发,第二层是 DIMENSION维度层的开发,后面几层就是DW 事实层、DM数据集市层的开发。通过ETL的调度管理就可以让这几层串联起来形成一个完整的数据处理流程。

数据流就是具体的从源数据到目标数据表的数据转换过程,所以也有 ETL 工具把数据流叫做转换。在数据流的开发设计过程中主要就是三个环节,目标数据表的链接,这两个直接通过 ETL 控件配置就可以了。中间转换的环节,这个时候就可能有很多的选择了,调 SQL 语句、存储过程,或者还是使用 ETL 控件来实现。

有的项目上习惯使用 ETL 控件来实现数据流中的转换,也有的项目要求不使用标准的转换组件使用存储过程来调用。也有的是因为数据仓库本身这个数据库不支持存储过程就只能通过标准的SQL来实现。

我们通常讲的BI数据架构师其实指的就是ETL的架构设计,这是整个BI项目中非常核心的一层技术实现,数据处理、数据清洗和建模都是在ETL中去实现。一个好的ETL架构设计可以同时支撑上百个包就是控制流,每一个控制流下可能又有上百个数据流的处理过程。之前写过一篇技术文章,大家可以搜索下关键字 BIWORK ETL 应该在网上还能找到到这篇文章。这种框架设计不仅仅是ETL框架架构上的设计,还有很深的ETL项目管理和规范性控制器思想,包括后期的运维,基于BI的BI分析,ETL的性能调优都会在这些框架中得到体现。因为大的BI项目可能同时需要几十人来开发ETL,框架的顶层设计就很重要。

参考技术A

ETL是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

ETL所描述的过程,一般常见的作法包含ETL或是ELT(Extract-Load-Transform),并且混合使用。通常愈大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,愈偏向使用ELT,以便运用目的端数据库的平行处理能力。

扩展资料

ETL有几个特点:

一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。

二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。

参考资料来源:百度百科-ETL

参考技术B ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。
为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据,
ETL是BI(商业智能)项目重要的一个环节。
扩展资料:
ETL与ELT:
ETL所描述的过程,一般常见的作法包含ETL或是ELT(Extract-Load-Transform),并且混合使用。通常愈大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,愈偏向使用ELT,以便运用目的端数据库的平行处理能力。
ETL(orELT)的流程可以用任何的编程语言去开发完成,由于ETL是极为复杂的过程,而手写程序不易管理,有愈来愈多的企业采用工具协助ETL的开发,并运用其内置的metadata功能来存储来源与目的的对应(mapping)以及转换规则。
工具可以提供较强大的连接功能(connectivity)来连接来源端及目的端,开发人员不用去熟悉各种相异的平台及数据的结构,亦能进行开发。当然,为了这些好处,付出的代价便是金钱。
参考资料来源:百度百科-ETL
参考技术C ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
软件名称Extract, transform, load过 程抽取、清洗、转换、装载应 用Informatica、OWB、DataStage、Beeload数据集成快速实现ETL
目录
1 简介
2 ETL与ELT
3 工具
4 参见
简介编辑
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节。
ETL与ELT编辑
ETL所描述的过程,一般常见的作法包含ETL或是ELT(Extract-Load-Transform),并且混合使用。通常越大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,越偏向使用ELT,以便运用目的端数据库的平行处理能力。
工具编辑
ETL(orELT)的流程可以用任何的编程语言去开发完成,由于ETL是极为复杂的过程,而手写程序不易管理,有越来越多的企业采用工具协助ETL的开发,并运用其内置的metadata功能来存储来源与目的的对应(mapping)以及转换规则。
工具可以提供较强大的连接功能(connectivity)来连接来源端及目的端,开发人员不用去熟悉各种相异的平台及数据的结构,亦能进行开发。
当然,为了这些好处,付出的代价便是金钱。
参考技术D ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。本回答被提问者和网友采纳

Mysql数据库中,事务是指啥?如何使用该功能?

参考技术A 什么是事务? \\x0d\\x0a\\x0d\\x0a事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务 \\x0d\\x0a\\x0d\\x0a注意:mysql数据支持事务,但是要求必须是innoDB存储引擎 \\x0d\\x0a\\x0d\\x0a解决这个问题: \\x0d\\x0a\\x0d\\x0amysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全 \\x0d\\x0a\\x0d\\x0a如何使用: \\x0d\\x0a\\x0d\\x0a(1)在执行sql语句之前,我们要开启事务 start transaction; \\x0d\\x0a\\x0d\\x0a(2)正常执行我们的sql语句 \\x0d\\x0a\\x0d\\x0a(3)当sql语句执行完毕,存在两种情况: \\x0d\\x0a\\x0d\\x0a1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ \\x0d\\x0a\\x0d\\x0a2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销 \\x0d\\x0a\\x0d\\x0a(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎) \\x0d\\x0amysql> create table bank(name varchar(20),money decimal(5,1))engine=innodb defau \\x0d\\x0alt charset=utf8; \\x0d\\x0a\\x0d\\x0amysql> inset into bank values(\'shaotuo\',1000),(\'laohu\',5000); \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1000.0 | \\x0d\\x0a| laohu | 5000.0 | \\x0d\\x0a+---------+--------+ \\x0d\\x0a\\x0d\\x0a------没有成功“回滚”执行rollback \\x0d\\x0amysql> start transaction; //开启事务 \\x0d\\x0aQuery OK, 0 rows affected (0.00 sec) \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money+500 where name=\'shaotuo\'; \\x0d\\x0aQuery OK, 1 row affected (0.00 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> update bank set moey=money-500 where name=\'laohu\'; \\x0d\\x0aERROR 1054 (42S22): Unknown column \'moey\' in \'field list\' \\x0d\\x0amysql> rollback; //只要有一个不成功,执行rollback操作 \\x0d\\x0aQuery OK, 0 rows affected (0.01 sec) \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1000.0 | \\x0d\\x0a| laohu | 5000.0 | \\x0d\\x0a+---------+--------+ \\x0d\\x0a------成功之后 进行commit操作 \\x0d\\x0amysql> start transaction; //开启事务 \\x0d\\x0aQuery OK, 0 rows affected (0.00 sec) \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money+500 where name=\'shaotuo\'; \\x0d\\x0aQuery OK, 1 row affected (0.01 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money-500 where name=\'laohu\'; \\x0d\\x0aQuery OK, 1 row affected (0.00 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> commit; //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响) \\x0d\\x0aQuery OK, 0 rows affected (0.05 sec) \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1500.0 | \\x0d\\x0a| laohu | 4500.0 | \\x0d\\x0a+---------+--------+

以上是关于数据ETL是指啥的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中的常量是指啥?

数据结构在计算机内存中的表示是指啥?

系统的吞吐量是指啥?

Linux的设备和设备号是指啥

oracle中DDL是指啥意思?

Mysql数据库中,事务是指啥?如何使用该功能?