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 信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以致于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。我们公司用的ETL工具是FineBI,建议试用一下! 参考技术B 多维分析在当今社会的确非常实用,我们可以通过用1989年研发的软件去用多个维度去判断数据的走势,国内这个领域,目前也就只有FineBI做的比较好了。 参考技术C 就是杂乱无章的数据通过etl程序来导入按维度梳理的数据仓库本回答被提问者和网友采纳
AWS中ETL流程的最佳方式是啥
【中文标题】AWS中ETL流程的最佳方式是啥【英文标题】:what is the best way of ETL Process In AWSAWS中ETL流程的最佳方式是什么 【发布时间】:2018-12-27 15:16:16 【问题描述】:我的数据在 redshift 集群中,并且每天都在刷新。
我希望每天运行一个 SQL 代码,以便在 redshift 集群中创建表。所以我必须设置将在特定时间运行的 ETL 作业,以从 SQL 代码创建表。
我不知道,最好的方法是什么,我是 AWS 的新手,并且对 SQL 有很好的了解。谁能建议如何进行?
【问题讨论】:
您可以查看***.com/questions/52306194/… 【参考方案1】:简短的回答:可能有很多方法可以做到这一点,你正在尝试什么。
长答案:通常可以通过以下任何一种方式完成。
-
使用任何通用编程语言(java、python、C/C++、.net 等)
使用任何现成的ETL 工具(如 pantaho、AWS 胶水等)
其他方式
既然你说你很天真,我想向你解释一下我过去用于复杂 ETL 的简单方法(即纯 shell 脚本),尽管考虑一下你的用例,并根据我建议的各种选项权衡它和使用最适合您的。
-
创建您的 shell/批处理脚本以运行 SQL。
设置 cron 作业以调用 #1 shell 脚本。
这里是开始的示例 shell 脚本。确保运行以下命令,psql
命令应安装在您将连接到 Redshift
的 EC2 之一上
#!/bin/sh
# example comment!
echo "Executing the create sales table"
psql postgresql://username:password@redshift-url:port/databasename?sslmode=require -c
"create table sales( Colunm1 varchar(55), Colunm2 varchar(255), updated_at timestamp);"
echo "Sales table created."
这只是为您提供一些开始的指针。每种方法都有很多优点/缺点,正如我所说,在决定任何方法之前,您必须权衡所有优点/缺点。
【讨论】:
您好,非常感谢您的帮助,非常感谢您的建议。 我在 RDS 实例下有 PostgreSQL,我可以在其中创建数据库,我是否必须在我的系统上安装 PostgreSQL?或者我将如何运行 cron 作业?有没有视频可以让我一步一步进入最后阶段? 否psql
是客户端工具,我相信它可以在没有完整的 PostgreSQL 数据库的情况下安装。这是一些指针。 unix.stackexchange.com/questions/249494/… ,类似地 crontab
是非常流行和旧的安排作业的方式,我想请检查您的网络管理员或任何熟悉 unix
的人。在这里,您可以使用cron-tab
上的基本信息。 tutorialspoint.com/unix_commands/crontab.htm。有关更多信息,请使用 cron 标签在 youtube 上搜索,您应该会得到很多好的材料。以上是关于etl是啥的主要内容,如果未能解决你的问题,请参考以下文章