tMysqlSPでストアドプロシージャーを使って州ラベルを検索
以下のジョブでは、Mysqlの2つのカラムが含まれるテーブルで、奇数の州IDに一致する州ラベルを検索します。このオペレーションの実行にはストアドプロシージャーが使用されます。
Talendでサポートされているテクノロジーの詳細は、Talendコンポーネントをご覧ください。
-
このサンプルで使用されている次のコンポーネントをドラッグ&ドロップします: tRowGenerator、tMysqlSP、tLogRow。
-
[Row Main] (行メイン)リンクを使用してコンポーネントを接続します。
-
tRowGeneratorを使用して、奇数のID番号を生成します。コンポーネントをダブルクリックしてエディターを起動します。
-
[+]ボタンをクリックして、 生成するスキーマにカラムを追加します。
-
[Key] (キー)チェックボックスをオンにし、[Type] (タイプ)から[Int] (整数)を定義します。
-
[Length] (長さ)は最大2桁になります。
-
プリセットファンクションのsequenceを、ウィンドウの下のパラメーターをカスタマイズして使用します。
-
[step] (ステップ)の[Value] (値)をこの例では1から2に変更します。それでも開始は1からになります。
-
[Number of generated rows] (生成する行数)を25に設定して、すべての奇数の州IDを生成します(全部で50州)。
-
[OK]をクリックして、設定を有効にします。
-
次に、tMysqlSPコンポーネントを選択し、プロパティを定義します。
-
[Property type] (プロパティタイプ)フィールドを[Repository] (リポジトリー)に設定し、リストの該当するエントリーを選択します。接続の詳細が自動的に入力されます。
-
あるいは、接続情報を手動で設定します。
-
[Sync Column] (カラムの同期]をクリックして、先行のコンポーネントから生成されたスキーマを取得します。
-
次に、[Edit Schema] (スキーマを編集) をクリックし、ID に加えて、出力する州ラベルを保持するためのカラムを1列追加します。
-
[SP Name] (SP名)フィールドに、データベースから呼び出すプロシージャーの名前を入力します。この例では、getstateになります。実行されるプロシージャーは以下のようになります:
DROP PROCEDURE IF EXISTS `talend`.`getstate` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `getstate`(IN pid INT, OUT pstate VARCHAR(50)) BEGIN SELECT LabelState INTO pstate FROM us_states WHERE idState = pid; END $$
-
[Parameters] (パラメーター)エリアで、 プラスボタンをクリックして、テーブルに行を追加します。
-
[Column] (カラム)フィールドをIDに、[Type] (タイプ)フィールドをINに設定します。これは、入力パラメーターとしてプロシージャーに渡されます。
-
2番目の行を追加し、[Column] (カラム)フィールドをStateに、[Type] (タイプ)フィールドをOutに設定します。これは、返される出力パラメーターです。
-
最終的には、tLogRowコンポーネントのプロパティを設定するために使われます。
-
スキーマを先行コンポーネントと同期します。
-
[Print values in cells of a table] (テーブルのセルに値を表示)チェックボックスをオンにして結果を読みやすくします。
-
次に、ジョブを保存して実行します。
プロシージャーで定義されているように奇数の州IDに対応する州ラベルが出力に表示されます。