数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。既然要获取全部数据,必然涉及到多系统,各类型数据库的对接问题,还有数据抽取、整理的问题。
这时候ETL工具的作用就集中体现出来了,数据的抽取、转换、加载直到供人们去分析使用,ETL就是数据抽取、转换、加载的过程。
有些地方可能选择的是ELT,先加载在转换。对数仓来说,ETL首先要考虑业务需求,最后数据落地模型,要体现某种主题。
然后从数据源考虑哪些字段是可以用的,在进行ETL。现在ETL工具很多,所以编程能力很难在这方面体现出来,对于公司来说,更看重的是ETL的思路。
通俗的想,数据仓库就像大水池,给水池蓄水需要泵和水管,那ETL就是承担泵和水管的功能。
为什么会出现数据仓库?没有数据仓库时,我们需要直接从业务数据库中取数据来做分析,虽然可以用于分析,但需要做很多额外的调整,在我看来,主要有以下几个问题:结构复杂,数据脏乱,难以理解,缺少历史,大规模查询缓慢。
然后数据仓库就出现了,各种数据都有结构、有规模地在一起,做决策更有一套。
什么是ETL?简单来说,如果把数据分析类比成做菜,ETL相当于备菜。
数据仓库是单个数据存储,出于分析性报告和决策支持目的而创建。既然要获取全部数据,必然涉及到多系统,各类型数据库的对接问题,还有数据抽取、整理的问题。
这时候ETL工具的作用就集中体现出来了,数据的抽取、转换、加载直到供人们去分析使用。
一句话,ETL工具作用不限于数据仓库(DW),但在数据仓库生成数据并体现其价值时ETL工具必不可少。
现在是盛行大数据包装的时代,周遭的人耳濡目染也了解一二。于公司层面而言,有前瞻性思维的已经初有成效;想用大数据噱头来宣传自己的,会让其用户认为他家产品是高大上存在。所以大数据背景下ETL方向的工程师很吃香,几乎稍有体量的互联网技术公司都会发布ETL工程师的招聘职位,工资视工作经验而定。
以个人经历来讲,ETL工具就是将从业务处理数据集、外部数据源和数据存储介质产生的元数据上按需求规则抽取数据,然后根据提供灵活的定制规则来清洗数据,之后将控制好质量的数据转换,最终按照预先定义好的模型,将数据加载到数据仓库。
只要涉及到数据源的数据抽取、数据的计算和处理过程的开发,都是 ETL,ETL 就这三个阶段,Extraction 抽取,Transformation 转换,Loading 加载。
从不同数据源抽取数据 EXTRACTION ,按照一定的数据处理规则对数据进行加工和格式转换 TRASFORMATION,最后处理完成的输出到目标数据表中也有可能是文件等等,这个就是 LOADING。
再通俗一点讲,ETL 的过程就跟大家日常做菜一样,需要到菜市场的各个摊位买好菜,把菜买回来要摘一下,洗一洗,切一切最后下锅把菜炒好端到饭桌上。菜市场的各个摊位就是数据源,做好的菜就是最终的输出结果,中间的所有过程像摘菜、洗菜、切菜、做菜就是转换。
在开发的时候,大部分时候会通过 ETL 工具去实现,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微软 SQL SERVER 里面的 SSIS 等等,在结合基本的 SQL 来实现整个 ETL 过程。
也有的是自己通过程序开发,然后控制一些数据处理脚本跑批,基本上就是程序加 SQL 实现。
ETL 是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗和加工,最终按照预先定义好的模型,将数据加载到目的数据仓库中去,做各种商业智能分析或者用于主数据管理体系。我个人比较喜欢的ETL工具有两款,一款是Kettle,主要是免费,还有一款是智分析,这个功能更加强大,是做ETL的神器,图形化的界面,加上高性能,非常不错。