ハイブからの入力に基づくMySQLのTalendクエリデータ
質問
私は、列の列を隠す必要があり、MySQL DBで照会したい出力に基づいています。
フローは以下のようなものです。
- hive table、IDSのリストを取得します
- IDのリストを使用してMySQLテーブルを照会します。クエリは
select a,b,c from x where id in (list from hive)
のようなものです。
どうすればいいですか?
解決
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のブログ
所属していません StackOverflow