在步骤之间的水壶etl转换跳跃不起作用

时间:2016-05-13 11:19:21

标签: kettle

我正在使用PDI 6和PDI的新功能。我创建了这两个表:

edittext

我在PDI中创建了一个转换,简单,只需两步

enter image description here

第一步:

    create table test11 (
     a int
    )

    create table test12 (
     b int
    )

第二步:

    insert into test11 (a)
    select 1 as c;

我希望第二步执行 AFTER 第一步,因此将插入值9。但是当我运行它时,没有任何内容被插入到表test12中。在我看来,这两个步骤是并行执行的。为了证明这一点,我取消了第二步并将sql放在第1步中,就像这样

    insert into test12 (b)
    select 9 where 1 in (select a from test11);

它有效。所以为什么?我认为一步是一步,所以下一步将等到它完成,但事实并非如此?

1 个答案:

答案 0 :(得分:1)

在PDI转换中,步骤初始化和执行并行发生。因此,如果您在单个转换中有多个步骤,则这些步骤将并行执行,数据移动以循环方式(默认情况下)进行。这主要是两个执行SQL步骤不起作用的原因,因为这两个步骤是并行执行的。 PDI Jobs也不是这样。除非配置为并行运行,否则作业以顺序方式工作。

现在针对您的问题,您可以尝试执行以下任一步骤:

  1. 使用SQL步骤创建两个单独的转换并将其放在JOB中。按顺序执行作业。
  2. 您可以尝试在转换中使用Block this step until finish,等待特定步骤执行。这是避免转换并行性的一种方法。您的转型设计类似如下: 数据网格是虚拟输入步骤。无需将任何数据分配给数据网格。
  3. enter image description here

    希望这会有所帮助:)