步骤之间的水壶 etl 转换跳跃不起作用
kettle etl transformation hop between steps doesn't work
我正在使用 PDI 6 并且是 PDI 的新手。我创建了这两个 tables:
create table test11 (
a int
)
create table test12 (
b int
)
我在PDI中创建了一个转换,简单,只需两步
第一步:
insert into test11 (a)
select 1 as c;
第二步:
insert into test12 (b)
select 9 where 1 in (select a from test11);
我希望第二步执行 AFTER 第一步,因此将插入值 9。但是当我 运行 它时,没有任何东西被插入 table test12。在我看来,这两个步骤是并行执行的。为了证明这一点,我删除了第二步并将 sql 放在步骤 1 中,如下所示
insert into test11 (a)
select 1 as c;
insert into test12 (b)
select 9 where 1 in (select a from test11);
它奏效了。所以为什么?我在想一步就是一步,所以下一步会等到它完成,但事实并非如此?
在 PDI 转换中,步骤初始化和执行是并行发生的。因此,如果您在单个转换中有多个步骤,这些步骤将并行执行,并且数据移动以循环方式发生 (默认情况下)。这就是为什么您的两个 execute SQL 步骤不起作用的主要原因,因为这两个步骤是并行执行的。 PDI 工作的情况并非如此。作业以顺序方式工作,除非它配置为 运行 并行。
现在对于您的问题,您可以尝试执行以下任一步骤:
- 使用 SQL 步骤创建两个单独的转换并将其放入 JOB 中。按顺序执行作业。
- 您可以尝试在转换中使用 Block this step until finish,这将等待特定步骤的执行。这是避免转换中的并行性的一种方法。您的转换设计将类似于以下内容:
数据网格是一个虚拟输入步骤。无需向数据网格分配任何数据。
希望这对您有所帮助:)
我正在使用 PDI 6 并且是 PDI 的新手。我创建了这两个 tables:
create table test11 (
a int
)
create table test12 (
b int
)
我在PDI中创建了一个转换,简单,只需两步
第一步:
insert into test11 (a)
select 1 as c;
第二步:
insert into test12 (b)
select 9 where 1 in (select a from test11);
我希望第二步执行 AFTER 第一步,因此将插入值 9。但是当我 运行 它时,没有任何东西被插入 table test12。在我看来,这两个步骤是并行执行的。为了证明这一点,我删除了第二步并将 sql 放在步骤 1 中,如下所示
insert into test11 (a)
select 1 as c;
insert into test12 (b)
select 9 where 1 in (select a from test11);
它奏效了。所以为什么?我在想一步就是一步,所以下一步会等到它完成,但事实并非如此?
在 PDI 转换中,步骤初始化和执行是并行发生的。因此,如果您在单个转换中有多个步骤,这些步骤将并行执行,并且数据移动以循环方式发生 (默认情况下)。这就是为什么您的两个 execute SQL 步骤不起作用的主要原因,因为这两个步骤是并行执行的。 PDI 工作的情况并非如此。作业以顺序方式工作,除非它配置为 运行 并行。
现在对于您的问题,您可以尝试执行以下任一步骤:
- 使用 SQL 步骤创建两个单独的转换并将其放入 JOB 中。按顺序执行作业。
- 您可以尝试在转换中使用 Block this step until finish,这将等待特定步骤的执行。这是避免转换中的并行性的一种方法。您的转换设计将类似于以下内容: 数据网格是一个虚拟输入步骤。无需向数据网格分配任何数据。
希望这对您有所帮助:)