Etl 如何在Pentaho釜中处理1到多个SQL(表输入)

Etl 如何在Pentaho釜中处理1到多个SQL(表输入),etl,kettle,pdi,pentaho-spoon,pentaho-data-integration,Etl,Kettle,Pdi,Pentaho Spoon,Pentaho Data Integration,我的情况是,我有以下表格 员工-员工id、员工姓名、员工地址 员工资产-emp\U id(FK)、资产id、资产名称(员工为1-many) 员工家庭成员-员工id(FK)、姓名、关系(1-员工多人) 现在,我必须运行一个预定的kettle作业,该作业从这些表中读取数据,比如说以1000名员工为一批,并根据数据库中与家庭成员和资产的关系为这1000条记录创建XML输出。它将是每个员工的嵌套XML记录 请注意,在我的场景中,这个水壶作业的性能非常关键 我这里有两个问题- 对于模式中的1-many关系

我的情况是,我有以下表格

员工-员工id、员工姓名、员工地址

员工资产-emp\U id(FK)、资产id、资产名称(员工为1-many

员工家庭成员-员工id(FK)、姓名、关系(1-员工多人

现在,我必须运行一个预定的kettle作业,该作业从这些表中读取数据,比如说以1000名员工为一批,并根据数据库中与家庭成员和资产的关系为这1000条记录创建XML输出。它将是每个员工的嵌套XML记录

请注意,在我的场景中,这个水壶作业的性能非常关键

我这里有两个问题-

  • 对于模式中的1-many关系,从数据库中拉入记录的最佳方法是什么
  • 如果XML连接步骤会影响性能,那么生成XML输出结构的最佳方法是什么

  • 要拉入数据,可以使用多个db查找字段或数据库连接步骤。就性能而言,我认为连接可能会更快,但这完全取决于您使用的查询的复杂性以及它的编写方式等。

    要拉入数据,您可以使用多个db查找字段或数据库连接步骤。就性能而言,我认为连接可能会更快,但这完全取决于您使用的查询的复杂性以及它的编写方式等。

    以下是我如何做到这一点的

    因此,有一个表输入步骤来读取基表并随后为其创建XML块。随后,在流中,我使用1-many关系(子表)作为另一个数据库连接步骤,将关系键传递给它。取出数据后,将为子行生成XML。然后将其传递到修改后的Java脚本值步骤(合并行),该步骤使用类似行的
    trans\u Status=SKIP\u TRANSFORMATION
    合并内容。一旦合并/连接了相似的行,则使用
    putRow(row)
    将其转储为下一步的输出。
    请注意,这要求SQL根据关系键进行排序。这一切正常,所以我可以继续进行。

    以下是我如何做到这一点的

    因此,有一个表输入步骤来读取基表并随后为其创建XML块。随后,在流中,我使用1-many关系(子表)作为另一个数据库连接步骤,将关系键传递给它。取出数据后,将为子行生成XML。然后将其传递到修改后的Java脚本值步骤(合并行),该步骤使用类似行的
    trans\u Status=SKIP\u TRANSFORMATION
    合并内容。一旦合并/连接了相似的行,则使用
    putRow(row)
    将其转储为下一步的输出。 请注意,这要求SQL根据关系键进行排序。这是执行正常,所以我可以继续它