4

これは簡単な作業だと思っていましたが、私は PDI に慣れていないため、次のことを達成するためにどの変換を選択すればよいか、これまでのところわかりませんでした。

Pentaho Data Integration (以前の Kettle)、Community Edition を使用して、あるデータベース 'A' の 1 つのテーブル ('tasksA') から別のデータベース B の別のテーブル 'tasksB' に値をマップ/コピーしています。taskA には列 'descriptionこれらの値を「tasksB」の列「taskName」にコピーしたいと考えています。さらに、「説明」の各値を数回コピーする必要があります。「タスク B」では、「タスク名」の値ごとに複数の行があるためです。

これはダイレクト SQL によって可能になるかもしれませんが、特に次のステップで関係する他のテーブルに拡張する必要があるため、これを PDI でより読みやすく定義できるかどうかを試してみたかったのです。

したがって、「description」のどの値を「taskName」のどの値にマッピングする必要があるか、また、この値を含むすべてのタプル (まあ、WHERE 句のように聞こえます...) で「taskName」列にマッピングする必要があることを伝える必要があります。交換されます。

「テーブル入力」ステップと「テーブル出力」ステップでの最初の実験は、それらの間にホップを描き、「テーブル出力」ステップの「データベース フィールド」タブを変更しただけでは機能しませんでした。私が望むものではない結果のSQL。スキーマを変更したくありません。値をコピーするだけです。

誰かが必要な正しい手順/変換を教えてくれたら素晴らしいと思います.Pentaho Wikiの最初の例を調べて、Castersらの「Pentaho Kettle Solutions」の本を手に入れました. しかし、これを解決する方法を見つけることができました。助けてくれてありがとう。

4

2 に答える 2

0

@RFVoltolini には良い答えがあります。あるいは、あなたは行くことができます

テーブル入力 -> 更新

そして、エラー出力をテキストファイル出力などの別のものに接続します。

于 2013-06-11T21:22:06.113 に答える
0

これが正しければ、「挿入/更新」ステップに接続されたテーブル入力を使用する必要があります。

挿入/更新ステップでは、タスク B で検索する必要があるタスク A からのキーを通知する必要があります。次に、taskB のどのフィールドを更新するかを定義します: description (ストリーム フィールドとして) -> taskName (テーブル フィールドとして)。

このキーが見つからない場合、タスク B に行が挿入されることに注意してください。計画していない場合は、次のようなものを作成する必要があります: テーブル入力 -> データベース ルックアップ -> 行のフィルター -> 挿入/更新

于 2012-09-18T22:45:16.913 に答える