質問

私は、列の列を隠す必要があり、MySQL DBで照会したい出力に基づいています。

フローは以下のようなものです。

  1. hive table、IDSのリストを取得します
  2. IDのリストを使用してMySQLテーブルを照会します。クエリはselect a,b,c from x where id in (list from hive)
  3. のようなものです。

    どうすればいいですか?

役に立ちましたか?

解決

ThiveInputコンポーネントを使用してクエリを作成してIDを取得する必要があります。

簡単な方法では、ThiveInputコンポーネントからtflowtoIterateに実行してから、TMySQLInputコンポーネントに繰り返すことができます。 TMYSQLInputコンポーネントでのクエリは次のようになります。

"SELECT a, b, c
FROM x
WHERE id = '" + ((Integer)globalMap.get("row1.id")) + "'"
.

ROW1ここでは、TFlowTierateに稼働している行を表します。 Ctrl + Spaceを押してtFlowToIterate_x.idオプションを選択してこの変数を取得することもできます。

TMYSQLInputコンポーネントにTBufferOutputコンポーネントを接続して、すべての反復を収集してから、さらに処理のためにTBufferInputコンポーネントでそれを読み返すことができます。

これは明らかに簡単な連結であり、それでは効率ともちろんSQL注入に開放されるのに最適な方法ではありません。しかし、それは大まかなやり方です。

あなたの他(潜在的な潜在的に良い)オプションは、TMYSQLROWコンポーネントを使用してパラメータ化されたクエリを使用することです(Talend 5.4以降のTMYSQLInputコンポーネントではサポートされていません)。

この答えは、別の問題に対する解決策の一部としてTalendのパラメータ化されたクエリに関する詳細(効率的に奥行き) 。その答えで述べたように、 Gabriele Baldassarreのブログ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top