使用Kettle

时间:2016-08-18 18:49:13

标签: mysql pentaho data-warehouse kettle

我有很多数据库(+100),每个数据库都有相同的结构和不同的连接。 我使用Kettle在不同的数据库中运行转换以创建数据仓库。

如何使用不同的连接自动运行相同的转换?

我已经证明了这个Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel,但它只接受csv中的一行。

我应该创建一个循环,还是我需要创建一个脚本?

任何帮助将不胜感激。 (对不起我的英文)

1 个答案:

答案 0 :(得分:2)

你可以用循环来做。 但是,不要担心,用Pentaho做到这一点并不难。

首先,您将使用JOB创建循环:

START - > Transform_that_holds_parameters - >的 Transform_to_run_in_a_loop

正如您所猜测的那样,您在每个数据库上运行的转换是此流程中的最后一个转换。但我们需要在该作业条目上设置两个高级标志:

  • 对每个输入行执行吗?
  • 将以前的结果复制到参数?

然后我们需要使用以下结构构建 Transform_that_holds_parameters

Some_sort_of_input - > copy_rows_to_result

在这里,你必须从某个地方获取所有连接参数,无论是Excel文件还是其他数据库中的表。但是,一旦你对这些数据进行评分,确保每个要运行转换的数据库都有1行。好吗?

将其连接到'将行复制到结果'步骤,此步骤将数据发送回我们的JOB,如果您还记得,我们的下一个转换设置为对每个输入行执行'执行。和'将以前的结果复制到参数'。

现在,请记住转换到最后一步的列名是什么,下一步将需要它们。

返回我们的工作室并转到 Transform_to_run_in_a_loop 的属性,打开参数并填写“"参数'和'流列名称'使用我们刚刚复制到Result的列。

在转换过程中,您需要使用完全相同的名称设置相同的参数。并在连接设置中使用这些参数。

完成后,现在您将拥有第一个转换设置所有参数,第二个转换为您拥有的每个数据库配置运行。