kettle组件说明
根据字段值来改变序列(Add value fields changing sequeue)
根据指定字段key生成序列,如果相邻的2行数据的key值相同,则序列按照指定的规则生成。如果相邻2行数据key值不同,则序列从初始值开始生成。
用来测试的转换:
![cabbed3b55b64fb400c88f00368100e9.png](https://i-blog.csdnimg.cn/blog_migrate/6b12cb024cfab709abf33ea9481b54e0.png)
自定义常量数据(Data grid)用来生成测试数据。
![207f4987cfd963a8b442390c9b92a067.png](https://i-blog.csdnimg.cn/blog_migrate/67e05c2f01f287ede18101048be73e34.png)
配置Add value fields changing sequeue,根据group字段生成序列,序列名seq。如下图:
![ee445177d8f43faed0b034b64a910781.png](https://i-blog.csdnimg.cn/blog_migrate/3562ee5b5b34d15e0b0faed2b15609af.png)
运行的结果:
![96bf9de9c6fa94c98ea35160e2344cfe.png](https://i-blog.csdnimg.cn/blog_migrate/1b3426e1a7957ef85cc52a399b972967.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](https://i-blog.csdnimg.cn/blog_migrate/3221982c7a000fe29c231aa7ae2e5fc8.png)
自定义常量数据(Data grid)用来生成测试数据。
![b96e938526d0c7b8cf423a9e5c0b0749.png](https://i-blog.csdnimg.cn/blog_migrate/b08ef7fb23ab8573cf25cc4df9f74ed5.jpeg)
分析查询(Analytic query)配置如下。根据group分组,leadname:获取后1条数据的name字段值。lag_name:获取前1条数据的name字段值。
![b5093342667eef1976e86371904a39c9.png](https://i-blog.csdnimg.cn/blog_migrate/afae1f122064891b7b7690e96af658d4.png)
执行结果:
![e03da871e5351dcde8c174a03501539c.png](https://i-blog.csdnimg.cn/blog_migrate/0495aaa1a0294d7508506e75cb82a8ff.png)
中止(Abort)
中止步骤可用于停止基于输入数据的转换。
![9c33f6ca8bc24ce145880e19e7cc5eab.png](https://i-blog.csdnimg.cn/blog_migrate/af08c1a8c0da69abf698e82c1915a9bc.png)
Options:
注:所有的选项,在Abort接收到的数据达到阈值时会进行中止操作。但是处理的数据量具有不确定性。处理的数据量可能大于阈值、也可能小于阈值或者等于阈值。
Logging:
增加常量(Add Constants)
简单而高效的往流里增加常量值。数据增加列。
![91dc570e5ed13121fa228bfa4c9517ac.png](https://i-blog.csdnimg.cn/blog_migrate/d1b25a70818e6b002eb24f1d2d68aaa1.png)
增加校验码(Add a Checksum)
生成指定字段的校验码,并将结果保存到数据中。支持元数据注入(ETL Metadata Injection)
![8910331a0b1724e719f59dafd87cc382.png](https://i-blog.csdnimg.cn/blog_migrate/6c8654c14c35d43341d3e8109e427b18.png)
增加序列(Add sequence)
添加序列步骤将序列添加到PDI流。序列是具有特定起始值和增量值的不断变化的整数值。您可以使用数据库序列来确定序列的值,也可以让PDI生成它。PDI生成的序列值在同一个转换中使用时是唯一的,并且每次运行转换时返回相同的起始值。
![752291f1617f3931f2900c224af8fb28.png](https://i-blog.csdnimg.cn/blog_migrate/0359f3ca1300fb908b8a60b2ac5f3291.jpeg)
如果使用PDI生成,当序列达到最大值后,会从起始值重新开始(循环序列)。
Counter name (optional):如果转换中存在多个增加序列步骤,counter name用来标识不同的序列。如果多个增加序列步骤的counter name一样,那么会使用同一个序列生成序列值。
用来测试的转换:
![dc3382cba224f11cbffa91e27c091d8c.png](https://i-blog.csdnimg.cn/blog_migrate/33e9af64d74f646106ab18d699c8d16d.png)
Add sequence设置counter name=seq
![7a9919b3d07bd13a88ed53b8e54e1689.png](https://i-blog.csdnimg.cn/blog_migrate/2c0d6c9dec1020e440c264f6c28dac5c.jpeg)
Add sequence 2设置counter name=seq
![e882ac0b508f659be5863c05b0721c05.png](https://i-blog.csdnimg.cn/blog_migrate/c1a2000790ef84c70b4c0e7088d3e437.jpeg)
运行结果(生成的seq_1、seq_2使用了同一个序列):
![9aab1d1f391adc37e7e54620da12d596.png](https://i-blog.csdnimg.cn/blog_migrate/1f0c5f3ceae4680ff6bed10197624486.png)
Add sequence 2修改counter name=seq2
![1a8af96dcf7832a98dfbcd7e9413f419.png](https://i-blog.csdnimg.cn/blog_migrate/668b77f23dd3f8d70f7d7c2e9615eb3c.jpeg)
运行结果(生成的seq_1、seq_2使用不同序列):
![9481eb3cb6f5ec63b7d9109a0846f596.png](https://i-blog.csdnimg.cn/blog_migrate/8a80079bcd38f719e1aa6eff32e395b3.png)
Add XML
生成xml格式的数据,并追加到数据中。支持元数据注入(ETL Metadata Injection)
![bc624fbbb79ad1aafaefe45c713a9506.png](https://i-blog.csdnimg.cn/blog_migrate/846547ea90b185dbe01bb55d21e52bf3.png)
选项说明:
![c2683e44c971e37f06e35b814fdb10e0.png](https://i-blog.csdnimg.cn/blog_migrate/e2ea4caa22dd993799a20793cf7e6376.jpeg)
选项说明:
AMQP Consumer
AMQP Producer
行转列(Row denormaliser,kettle里名称叫列转行)
将多行数据转换成一行
![c880fac258d500b6e0d8f28b4d858469.png](https://i-blog.csdnimg.cn/blog_migrate/43a22703b592dd5e8eccd060932b46dd.png)
测试数据:
![dde6c1365a95a5c23f29f4688f1dbdd6.png](https://i-blog.csdnimg.cn/blog_migrate/56cb424825be17d184476845fe5ee42d.png)
行转列配置(分组字段非必填。输入的数据需要是排好序的):
![3f745d19794e2475ae6f097da1555ffa.png](https://i-blog.csdnimg.cn/blog_migrate/65235334eb6511ad69c5db637fc1831a.jpeg)
运行后的结果:
![b95061016d8cf1f0702cd910f933b07c.png](https://i-blog.csdnimg.cn/blog_migrate/254a9b6718bdc5e566dc3f4f8b2ff0b7.png)
Greenplum load
使用Greenplum load组件,需要提前按照gp-load(按照方法可以参照:无波:Greenplum load 6.4安装)
Greenplum load组件原理是先将接受到数据写入到本地的文件中,在转换停止的时候将文件中的数据通过外部表的形式加载到greenplum中(使用gpfdist外部表加载数据)
用来测试的转换(从kafka里接收数据,然后插入到gp中。由于需要转换停止的时候才会加载数据到gp,所有加了个Abort(中止)步骤。当接受到100w数据的时候停止input。可以配置一个job定时执行):
![dcc81e57ee639de968db1ab76e01b07b.png](https://i-blog.csdnimg.cn/blog_migrate/7d8eab0ee81810bc9e104cc59a2e325b.png)
Greenplum load配置
![e38dac361073f803d9a03eaf8b759a54.png](https://i-blog.csdnimg.cn/blog_migrate/d1213b889bc16679aa1902309cf1c06f.jpeg)
![e313a753ee8d5ce656b71e7436d175f7.png](https://i-blog.csdnimg.cn/blog_migrate/6b7a451a1a9a59a2c6928ac643018220.jpeg)
![f75781ec9c825acf8e71052a4384d033.png](https://i-blog.csdnimg.cn/blog_migrate/98313584f659360e31db864e402bd048.jpeg)
配置项说明:
Local Host Names Tab:
Fields Tab:
GP Configuration tab: