暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kettle使用分享

栗子Jie 2020-06-05
1105
  • 概念

Kettle是一款国外开源的ETL工具,Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

  • 应用场景

ETL工具在数据仓库项目使用非常频繁,kettle也可以应用在以下一些场景:

  • 在不同应用或数据库之间整合数据

  • 把数据库中的数据导出到文本文件

  • 大批量数据装载入数据库

  • 数据清洗

  • 使用优点

  • 免费开源:开源、可视化的、功能强大的ETL工具,kettle完全是基于java进行开源的,所以就需要运行环境有java配置;

  • 易配置: 可以在window、linux、Unix上运行,无需安装,数据抽取高效稳定;

  • 允许多种数据源:ETL工具集,它允许你管理来自不同数据库的数据;

  • 图形化界面;

  • 免安装,直接解压可使用

  • 常用组件

  • 常用转换组件

  • 计算形成新字段:只限算术运算,并且选择固定

  • 过滤记录:元表某字段按照某个条件分流,满足条件的到一个表,不满足的到另一个表,这两个目标表都必须有。

  • Switch/Case:和过滤记录类似,可以多个条件判断,并且有默认转向条件,可以完美替换过滤记录组建

  • 记录分组:group by 组建未能正常按照预期理解运行

  • 设置为NULL:将某个特定值设置为NULL

  • 行列转换:行转成列,使用Row Normalizer组件,事先一定要是根据分组字段排好序,关键字段就是name列字段,分组字段就是按照什么分组,目标字段就是行转列之后形成的字段列表。

  • 字段选择:选择需要的目的列到目标表,并且量表的对应字段不一样时可以用来做字段映射

  • 排序:分组前先排序可以提高效率

  • 条件分发:根据条件分发

  • 值映射:相当于oracle的decode函数,源和目标字段同名的话,只要写源字段就可以了

  • 常用输入组件

  • 表输入:源表输入

  • 文本文件输入:文本文件输入

  • xml文件输入:使用Get Data From XML组件,可以在其中使用xpath来选择数据

  • JsonInput:貌似在中文环境下组件面板里看不到,切换到英文模式就看到了

  • 常用输出组件

  • 表输出:表输出

  • 文本文件输出:文本文件输出

  • XML文件输出:输出的XML文件是按照记录行存储的,字段名为元素名

  • Excel文件输出:输出的excel文件是按照记录行存储的,字段名为元素名

  • 删除:符合比较条件的记录将删除

  • 更新:注意两个表都要有主键才可以

  • 插入/更新:速度太慢,不建议使用

  • 检查字段是否存在:若在则家一个标志位,值可以是Y/N

  • 等值连接:有关联关系字段可以关联,其它的不关联。

  • 笛卡尔连接:所有两边的记录交叉连接

  • write to log:把数据输出到控制台日志里,一般调试时很常用

  • 空操作:很常用,比如过滤数据,未过滤走正常流程,滤除的数据就转向空操作。我喜欢在转换里用它做开始和结束之类需要分发或汇聚数据流的场景

  • 使用分享

  • 数据库连接jar包需要提前放入\data-integration\lib 路径下,才能进行数据传输

  • 基础使用
    简单的表输入-表输出

    表输入配置:


    表输出配置:

简单表输入-插入/更新:





  • 实践分享



    除了查询逻辑之外,其他转换为简单的表输入,表输出 不再赘述


    查询逻辑较为复杂,本次数据传输要求数据每变化一次(I U D)需要添加一条记录,并记录状态,所以对查询数据进行了合并处理

  • 记录点滴,从我做起!


文章转载自栗子Jie,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论