2016-09-27 16 views
1

私は次の表を持っている状況があります。Pentahoケトルの1から多くのSQL(テーブル入力)を扱う方法

従業 - EMP_ID、EMP_NAME、emp_address

Employee_assets - EMP_ID(FK)、ASSET_ID、ASSET_NAME(従業員の1対多

Employee_family_members - EMP_ID(FK) 、fm_name、fm_relationship(従業員のための

今、私は1000人の従業員のバッチでこれらのテーブルからデータを読み込んで、家族のメンバーと資産を持つDBの関係に基づいて1000レコードのXML出力を作成する予定のケトルジョブを実行します。すべての従業員にネストされたXMLレコードになります。

私のシナリオでは、このケトルジョブのパフォーマンスは非常に重要です。

I持ってここに二つの質問 -

  1. スキーマ内の1対多の関係のためにデータベースからレコードを引き込むための最良の方法は何ですか?
  2. XML結合ステップがパフォーマンスヒットである場合、XML出力構造を生成する最良の方法は何ですか?

答えて

0

これはどのように達成したかです。

Transformation showing the XML creation out of one to many

ので、ベーステーブルを読み、その後、それをXMLチャンクを作成するために、1つのテーブル入力工程があります。その後、このフローでは、関係キーを渡す別のデータベース結合ステップとして1-manyリレーションシップ(子テーブル)を使用しています。データが取り出されると、子行のXMLが生成されます。これは、変更されたJava Script Valueステップ(行のマージ)に渡され、同様の行に対してtrans_Status = SKIP_TRANSFORMATIONを使用してコンテンツがマージされます。同様の行がマージ/連結されると、putRow(row)が出力として次のステップに出力されます。 これは、SQLが関係キーに基づいて並べ替え/並べ替えが必要であったことに注意してください。これは問題ないので、私はそれを進めることができます。

0

データをプルするには、複数のデータベース参照フィールドまたはデータベース結合ステップを使用できます。パフォーマンスは賢明です。結合は高速になると思われますが、使用するクエリの複雑さや書き方などに依存します。

関連する問題