kettle组件说明
根据字段值来改变序列(Add value fields changing sequeue)
根据指定字段key生成序列,如果相邻的2行数据的key值相同,则序列按照指定的规则生成。如果相邻2行数据key值不同,则序列从初始值开始生成。
用来测试的转换:
自定义常量数据(Data grid)用来生成测试数据。
配置Add value fields changing sequeue,根据group字段生成序列,序列名seq。如下图:
运行的结果:
分析查询(Analytic Query)
根据指定的分组字段(也可以不设置分组字段,所有的数据都是一组),获取前/后(LEAD/LAG)N条数据的指定字段的值,并生成新的字段。
前N条(LEAD):排在当前数据后面的第N条
后N条(LAG):排在当前数据前面的第N条
注:如果数据没有根据分组字段排序,获取的结果和预期会不一致。只会获取相邻的分组字段值相同的数据进行分析。如:group=[1,1,1,2,1],只会认为group[0-2]是一组,并进行分析。虽然group[4]的值也是1,但是不连续。
用来测试的转换:
自定义常量数据(Data grid)用来生成测试数据。
分析查询(Analytic query)配置如下。根据group分组,leadname:获取后1条数据的name字段值。lag_name:获取前1条数据的name字段值。
执行结果:
中止(Abort)
中止步骤可用于停止基于输入数据的转换。
Options:
注:所有的选项,在Abort接收到的数据达到阈值时会进行中止操作。但是处理的数据量具有不确定性。处理的数据量可能大于阈值、也可能小于阈值或者等于阈值。
Logging:
增加常量(Add Constants)
简单而高效的往流里增加常量值。数据增加列。
增加校验码(Add a Checksum)
生成指定字段的校验码,并将结果保存到数据中。支持元数据注入(ETL Metadata Injection)
增加序列(Add sequence)
添加序列步骤将序列添加到PDI流。序列是具有特定起始值和增量值的不断变化的整数值。您可以使用数据库序列来确定序列的值,也可以让PDI生成它。PDI生成的序列值在同一个转换中使用时是唯一的,并且每次运行转换时返回相同的起始值。
如果使用PDI生成,当序列达到最大值后,会从起始值重新开始(循环序列)。
Counter name (optional):如果转换中存在多个增加序列步骤,counter name用来标识不同的序列。如果多个增加序列步骤的counter name一样,那么会使用同一个序列生成序列值。
用来测试的转换:
Add sequence设置counter name=seq
Add sequence 2设置counter name=seq
运行结果(生成的seq_1、seq_2使用了同一个序列):
Add sequence 2修改counter name=seq2
运行结果(生成的seq_1、seq_2使用不同序列):
Add XML
生成xml格式的数据,并追加到数据中。支持元数据注入(ETL Metadata Injection)
选项说明:
选项说明:
AMQP Consumer
AMQP Producer
行转列(Row denormaliser,kettle里名称叫列转行)
将多行数据转换成一行
测试数据:
行转列配置(分组字段非必填。输入的数据需要是排好序的):
运行后的结果:
Greenplum load
使用Greenplum load组件,需要提前按照gp-load(按照方法可以参照:无波:Greenplum load 6.4安装)
Greenplum load组件原理是先将接受到数据写入到本地的文件中,在转换停止的时候将文件中的数据通过外部表的形式加载到greenplum中(使用gpfdist外部表加载数据)
用来测试的转换(从kafka里接收数据,然后插入到gp中。由于需要转换停止的时候才会加载数据到gp,所有加了个Abort(中止)步骤。当接受到100w数据的时候停止input。可以配置一个job定时执行):
Greenplum load配置
配置项说明:
Local Host Names Tab:
Fields Tab:
GP Configuration tab: