kettle 先删除后插入_ETL工具kettle

kettle组件说明

根据字段值来改变序列(Add value fields changing sequeue)

根据指定字段key生成序列,如果相邻的2行数据的key值相同,则序列按照指定的规则生成。如果相邻2行数据key值不同,则序列从初始值开始生成。

用来测试的转换:

cabbed3b55b64fb400c88f00368100e9.png

自定义常量数据(Data grid)用来生成测试数据。

207f4987cfd963a8b442390c9b92a067.png

配置Add value fields changing sequeue,根据group字段生成序列,序列名seq。如下图:

ee445177d8f43faed0b034b64a910781.png

运行的结果:

96bf9de9c6fa94c98ea35160e2344cfe.png

分析查询(Analytic Query)

根据指定的分组字段(也可以不设置分组字段,所有的数据都是一组),获取前/后(LEAD/LAG)N条数据的指定字段的值,并生成新的字段。

前N条(LEAD):排在当前数据后面的第N条

后N条(LAG):排在当前数据前面的第N条

注:如果数据没有根据分组字段排序,获取的结果和预期会不一致。只会获取相邻的分组字段值相同的数据进行分析。如:group=[1,1,1,2,1],只会认为group[0-2]是一组,并进行分析。虽然group[4]的值也是1,但是不连续。

用来测试的转换:

0babaf31db40a0133ea2eb0db3d5aa0a.png

自定义常量数据(Data grid)用来生成测试数据。

b96e938526d0c7b8cf423a9e5c0b0749.png

分析查询(Analytic query)配置如下。根据group分组,leadname:获取后1条数据的name字段值。lag_name:获取前1条数据的name字段值。

b5093342667eef1976e86371904a39c9.png

执行结果:

e03da871e5351dcde8c174a03501539c.png

中止(Abort)

中止步骤可用于停止基于输入数据的转换。

9c33f6ca8bc24ce145880e19e7cc5eab.png

Options:

注:所有的选项,在Abort接收到的数据达到阈值时会进行中止操作。但是处理的数据量具有不确定性。处理的数据量可能大于阈值、也可能小于阈值或者等于阈值。

Logging:

增加常量(Add Constants)

简单而高效的往流里增加常量值。数据增加列。

91dc570e5ed13121fa228bfa4c9517ac.png

增加校验码(Add a Checksum)

生成指定字段的校验码,并将结果保存到数据中。支持元数据注入(ETL Metadata Injection)

8910331a0b1724e719f59dafd87cc382.png

增加序列(Add sequence)

添加序列步骤将序列添加到PDI流。序列是具有特定起始值和增量值的不断变化的整数值。您可以使用数据库序列来确定序列的值,也可以让PDI生成它。PDI生成的序列值在同一个转换中使用时是唯一的,并且每次运行转换时返回相同的起始值。

752291f1617f3931f2900c224af8fb28.png

如果使用PDI生成,当序列达到最大值后,会从起始值重新开始(循环序列)。

Counter name (optional):如果转换中存在多个增加序列步骤,counter name用来标识不同的序列。如果多个增加序列步骤的counter name一样,那么会使用同一个序列生成序列值。

用来测试的转换:

dc3382cba224f11cbffa91e27c091d8c.png

Add sequence设置counter name=seq

7a9919b3d07bd13a88ed53b8e54e1689.png

Add sequence 2设置counter name=seq

e882ac0b508f659be5863c05b0721c05.png

运行结果(生成的seq_1seq_2使用了同一个序列):

9aab1d1f391adc37e7e54620da12d596.png

Add sequence 2修改counter name=seq2

1a8af96dcf7832a98dfbcd7e9413f419.png

运行结果(生成的seq_1seq_2使用不同序列):

9481eb3cb6f5ec63b7d9109a0846f596.png

Add XML

生成xml格式的数据,并追加到数据中。支持元数据注入(ETL Metadata Injection)

bc624fbbb79ad1aafaefe45c713a9506.png

选项说明:

c2683e44c971e37f06e35b814fdb10e0.png

选项说明:

AMQP Consumer

AMQP Producer

行转列(Row denormaliser,kettle里名称叫列转行)

将多行数据转换成一行

c880fac258d500b6e0d8f28b4d858469.png

测试数据:

dde6c1365a95a5c23f29f4688f1dbdd6.png

行转列配置(分组字段非必填。输入的数据需要是排好序的):

3f745d19794e2475ae6f097da1555ffa.png

运行后的结果:

b95061016d8cf1f0702cd910f933b07c.png

Greenplum load

使用Greenplum load组件,需要提前按照gp-load(按照方法可以参照:无波:Greenplum load 6.4安装)

Greenplum load组件原理是先将接受到数据写入到本地的文件中,在转换停止的时候将文件中的数据通过外部表的形式加载到greenplum中(使用gpfdist外部表加载数据)

用来测试的转换(从kafka里接收数据,然后插入到gp中。由于需要转换停止的时候才会加载数据到gp,所有加了个Abort(中止)步骤。当接受到100w数据的时候停止input。可以配置一个job定时执行):

dcc81e57ee639de968db1ab76e01b07b.png

Greenplum load配置

e38dac361073f803d9a03eaf8b759a54.png

e313a753ee8d5ce656b71e7436d175f7.png

f75781ec9c825acf8e71052a4384d033.png

配置项说明:

Local Host Names Tab:

Fields Tab:

GP Configuration tab:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值