【问题标题】:How to deal with 1 to many SQL (Table inputs) in Pentaho Kettle如何在 Pentaho Kettle 中处理 1 到多个 SQL(表输入)
【发布时间】:2016-09-27 07:02:41
【问题描述】:

我有以下表格。

员工 - emp_id、emp_name、emp_address

Employee_assets - emp_id(FK)、asset_id、asset_name(1-many 代表员工)

Employee_family_members - emp_id(FK)、fm_name、fm_relationship(1-many 代表员工)

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

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

我有两个问题 -

  1. 从数据库中为模式中的一对多关系提取记录的最佳方法是什么?
  2. 鉴于 XML 连接步骤会影响性能,生成 XML 输出结构的最佳方法是什么?

【问题讨论】:

    标签: etl kettle pdi pentaho-spoon pentaho-data-integration


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是我实现这一目标的方法。

      因此,有一个表输入步骤来读取基表并随后为其创建 XML 块。随后,在流程中,我使用一对多关系(子表)作为另一个数据库连接步骤,将关系键传递给它。提取数据后,将为子行生成 XML。然后将其传递到 Modified Java Script Value 步骤(合并行),然后使用 trans_Status = SKIP_TRANSFORMATION 合并类似行的内容。一旦相似的行被合并/连接,putRow(row) 用于将其作为输出转储到下一步。 请注意,这要求 SQL 根据关系键进行排序/排序。这表现不错,所以我可以继续。

      【讨论】:

        猜你喜欢
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        相关资源
        最近更新 更多