确保步骤在Kettle中按顺序运行?

时间:2015-09-14 14:59:36

标签: pentaho kettle

我有一个Kettle转换,可以将数据插入到许多数据库表中。对于每个表,都有一个单独的转换(带注入步骤),它进行一些计算,检查数据并最终插入。使用single threader步骤调用这些子变换。

主要转变看起来像这样:

Input from -----> Dummy -----> Dummy -----> Dummy -----> Done
   file             |            |            |
                    |            |            |
                    v            v            v
                  Select       Select       Select
                  values       values       values
                    |            |            |
                    |            |            |
                    v            v            v
                  Single       Single       Single
                threader 1   threader 2   threader 3

我的问题是我想确保在Single threader 1为该行运行之前Single threader 2完成特定行,依此类推。这是因为第一个单线程在一个表中添加了一个帖子,然后应该在后面的表中引用,如果插入了一个不存在的帖子,那么数据库将抛出一个错误。

我不能将单个线程放在一行中,因为我需要丢弃除了几个总共大约50个字段以外的所有字段以匹配单个线程的注入器。这就是select values的作用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是这种情况的例子

create table a (id serial primary key, md5 text not null);
create table b (id serial primary key, md5 text not null, a_id int not  null);
create table c (id serial primary key, md5 text not null, a_id int not null, b_id int not null);

转型的例子

enter image description here

我假设数据是平的,因此开头的每一行都包含所有表A,B和C的数据。