2017-06-06 3 views
0

私は、さまざまなデータソースを1つのデータセットにまとめるためのデータブレンディングプロセスを再作成するためにPentahoケトルを使用しています。Pentahoケトルを使用してテーブル入力のパラメータとして前のホップのフィールドを使用します。

ある時点で、特定の失敗がnull(この場合は長さと重み)であるかどうかを確認するために行フィルタを使用しています。フィルタの真の部分の直後に、私はテーブル入力(MSSQL)を使用してクエリを実行し、データベース内の追加データを検索しようとしています。私は周りにしようとしてきた

SELECT field1, field2, ... 
FROM my_table WHERE patient_id in ( 
    reference_to_the_patient_id_field_from_the_row_filter 
) 

ようなクエリを書き留めるために、私は表の入力でそれを使用するために(私の場合は外部キーpatient_id、)行のフィルターからのフィールドを使用することができる方法はあります変数ですが、環境だけでなくコンテキストであるように見えます。また、スクリプト内の変数を置換するというオプションは、私にはあまり効果がないようです。

あなたが私を助けてくれることを願っています。御時間ありがとうございます。

+0

使用DataBaseJoinステップ、コメントをご記入くださいFIELD2フォームmy_tableにt.patient_id = my_table.patient_id – simar

+0

の電源を使用します答えとして、私はそれを受け入れることができます。よく働く!どうもありがとう。 – simar

+0

上トン(patient_id)として(値を(?))に参加、フィールド1を選択するには、このステップの変更スクリプトでJDBCのPreparedStatement – Ben

答えて

2

テーブル入力は、行の生成ステップであり、中間ステップではありません。 「ステップからデータを挿入する」オプションを使用する場合は、実際の疑問符を値に置き換え、データベースにビルドされたクエリを送信します。パフォーマンスとエラーが発生しやすい(前のステップからの値はnullか空文字列ですか、それともSQLインジェクションが含まれているのでしょうか?)

DatabaseJoinステップは、このような場所に適しています。 PreparedStatementを使用しますが、これははるかに高速です。

は1つのだけのテーブルにデータを抽出するために使用さがあるので、あなたがDatabaseLookupステップを使用することを検討するかもしれないパラメータ

select field1, field2 form my_table join (values(?)) as t(patient_id) on t.patient_id = my_table.patient_id 

を渡すために、SQLクエリを変更することができます。パフォーマンスは良く、キャッシュ機構を備えています。

+0

もう一度、ありがとうございました! + 1A – Ben

関連する問題