×

Kettle(一) ETL 工具入门_etl数据抽取工具

前端技术网 前端技术网 发表于2024-01-08 18:50:16 浏览1286 评论0

抢沙发发表评论

一、ETL kettle 从上一步传来的参数使用

你的意思是从一个表里面查到2列数值,然后想把这2列作为下一个SQL的where条件吧?

第一步:变量和目标表的准备

Kettle(一) ETL 工具入门_etl数据抽取工具

这个对应于你说的2列变量值

这个是我在数据库里面创建的一张student表对应字段 id name score

第二步:搭建处理环境

在这儿 where条件里的第一个问号对应的是传过来的第一个参数(ID)第二个问号对应的是传过来的第二个参数(NAME) PS:要是你把SQL写成 where name=? and id=?就会出错的。

勾选“替换SQL语句里的变量“和”执行每一行“。

拓扑图如下:

Kettle(一) ETL 工具入门_etl数据抽取工具

结果如下:

二、如何用etl工具kettle生成拉链表

拉链表是在数据仓库中常见的表,主要用还存储不按时间变化的表,比如客户基本信息表。

下面先建两个实例表,user_info和user_info_l,其中user_info_l为拉链表。

user_info表及数据:

user_info_l表及转换后的数据:

kettle的设计其实很简单,就一个“表输入”一个“维度查询/更新

下面来看一下表输入的配置:

这个很简单,但是一定要有个基本表的数据日期

下面几个是“维度查询/更新”的配置:

下面介绍一下设置中的关键地方,依次如下:

1.不钩选的话变化的数据不会插入,至于不勾选时的用途,大家可以研究一下。

2.这里是创建每个版本关键字,基本就是源表的主键。

3.这里是要更新的字段,除了源表关键字,其他都选好了。

4.截图的时候忘了到几了。。。

5.kettle自动给啦链表生成的主键。

6.代理关键字获取的方法。

7.每条记录的版本号,每变化依次一个版本号。

8.根据哪个字段判断是哪天更新的,也可以使用系统时间。

9.拉链的最早开始日期,第一次插入空表时也是这个日期。

10.拉链的最晚结束日期,更新的字段都使用这个值,被更新后变为更新的日期,可以参考上面图中user_info_l里的数据。

我在用的时候发现了一个问题,不知道是bug,还是kettle有意为之。就是在插入拉链表时,会产生一条代理主键为0的空记录。可能是bug,也可能是kettle为防止数据出现问题,强制让其他字段为可以为空。

要解决这个问题很简单,只需要在加一个删除的trans即可:

生成记录的配置如下:

然后把两个trans放到一个job里即可,job如下图:

至此,拉链表便创建完成。

三、kettle 至少etl工具,还有别的工具吗

【好评赠送】Kettle软件包6.1-8.2免费下载

链接:https://pan.baidu.com/s/1yYLRTGL_D6MV14jVJAkOvg提取码:3fxt

Kettle最早是一个开源的ETL工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。在2006年,Pentaho公司收购了Kettle项目,原Kettle项目发起人Matt Casters加入了Pentaho团队,成为Pentaho套件数据集成架构师[1];从此,Kettle成为企业级数据集成及商业智能套件Pentaho的主要组成部分,Kettle亦重命名为Pentaho Data Integration[1-2]。Pentaho公司于2015年被Hitachi Data Systems收购。[3](Hitachi Data Systems于2017年改名为Hitachi Vantara[4])

四、开源ETL工具比较,Kettle和Talend,都有什么优势和劣势

Pentaho Data Integration(Kettle)是Pentaho生态系统中默认的ETL工具。通过非常直观的图形化编辑器(Spoon),您可以定义以XML格式储存的流程。在Kettle运行过程中,这些流程会以不同的方法编译。用到的工具包括命令行工具(Pan),小型服务器(Carte),数据库存储库(repository)(Kitchen)或者直接使用IDE(Spoon)。

Talend Open Studio是 Talend开发的ETL工具——Talend是一家主营数据集成和数据管理解决方案的企业。Talend采用用户友好型,综合性很强的IDE(类似于Pentaho Kettle的 Spoon)来设计不同的流程。这些流程可以在IDE内部测试并编译成Java代码。您可以随时查看并编辑生成的Java代码,同时实现强大的控制力和灵活性。

两者都非常优秀,都属于用户友好型的交叉平台(基于Java的)工具。它们的主要差异在于Kettle将 ELT流程编译为 XML格式,然而Talend Open Studio则生成 Java代码。

易用性:

Talend:有 GUI图形界面但是以 Eclipse的插件方式提供。

Kettle:有非常容易使用的 GUI,出现问题可以到社区咨询。

技术支持:

Talend:主要在美国

Kettle:在美国,欧洲(比利时,德国,法国,英国),亚洲(中国,日本,韩国)都可以找到相关技术支持人员。

部署:

Talend:创建 java或perl文件,并通过操作系统调度工具来运行

Kettle:可以使用 job作业方式或操作系统调度,来执行一个转换文件或作业文件,也可以通过集群的方式在多台机器上部署。

速度:

Talend:需要手工调整,对特定数据源有优化知识。

Kettle:比 Talend快,不过也需要手工调整,对 Oracle和 PostGre等数据源做了优化,同时也取决于转换任务的设计。

数据质量:

Talend:在 GUI里有数据质量特性,可以手工写 SQL语句。

Kettle:在 GUI里有数据质量特性,可以手工写 SQL语句、java脚本、正则表达式来完成数据清洗。

监控:

Talend:有监控和日志工具

Kettle:有监控和日志工具

连接性:

Talend:各种常用数据库,文件,web service。

Kettle:非常广泛的数据库,文件,另外可以通过插件扩展

OK,本文到此结束,希望对大家有所帮助。