ストアドプロシージャーを使って数値フォーマットをチェック
以下のジョブでは、社会保障番号(SSN)とその所有者の氏名が含まれるOracleデータベースに接続し、標準の###-##-####形式に対してSSN形式をチェックするストアドプロシージャーを呼び出します。検証出力の結果として、有効な形式を示す1、正しくない形式を示す0が実行コンソールに表示されます。
Talendでサポートされているテクノロジーの詳細は、Talendコンポーネントをご覧ください。
-
[Palette] (パレット)から次のコンポーネントをドラッグ&ドロップします: tOracleConnection、tOracleInput、tOracleSP、およびtLogRow。
-
ここではデータは処理されないため[Then Run] (次に実行)接続を使用して、tOracleConnectionをtOracleInputにリンクします。
-
さらに、[Row Main] (行メイン)リンクを使用してもう一方のコンポーネントを接続し、行がパラメーターとしてSPコンポーネントおよびコンソールに渡されるようにします。
-
tOracleConnectionで、関連するデータベースの接続の詳細を定義します。こうすることで、この情報を他のすべてのDB関連コンポーネントで再利用できるようになります。
-
次に、tOracleInputを選択し、プロパティを定義します。
-
既に設定されている接続の詳細を再利用するには、[Use an existing connection] (既存の接続を使用)チェックボックスをオンにし、リストのtOracleConnectionコンポーネントを選択します。
-
OracleスキーマはリポジトリーのDB Oracle接続エントリーで定義されているため、[Property type] (プロパティタイプ) として[Repository] (リポジトリー) を選択します。Oracle DBの詳細を[Repository] (リポジトリー)に記録していない場合は、 スキーマ名を手動で入力します。
-
次に、[Repository] (リポジトリー)を[Schema] (スキーマ)として選択し、Oracleデータベーステーブルに対応する関連スキーマを取得します。
-
この例では、SSNテーブルに、ID、NAME、CITY、およびSSNUMBERを含む、カラム4つのスキーマがあります。
-
[Query] (クエリー)フィールドで、次の選択クエリーを入力するか、リポジトリーに保管されている場合はリストで選択します。
select ID, NAME, CITY, SSNUMBER from SSN
-
次に、tOracleSPを選択し、[Basic settings] (基本設定)を定義します。
-
tOracleInputコンポーネントの場合と同様に、[Property type] (プロパティタイプ)フィールドで[Repository] (リポジトリー)を選択し、[Use an existing connection] (既存の接続を使用)チェックボックスをオンにします。次に、該当するエントリーをそれぞれのリストから選択します。
-
tOracleSPに使用されるスキーマは、 入力スキーマと若干異なります。実際には、カラム([SSN_Valid])が1列入力スキーマに追加されます。このカラムには、プロシージャーで生成されたフォーマットの有効性ステータス(1または0)が保持されます。
-
[SP Name] (ストアドプロシージャー名)フィールドに、データベースで呼び出されるストアドプロシージャー(またはファンクション)の正確な名前を入力します。このユースケースでは、ストアドプロシージャー名はis_ssnになります。
-
この具体例で使用される基本的なファンクションは以下のとおりです:
CREATE OR REPLACE FUNCTION is_ssn(string_in VARCHAR2) RETURN PLS_INTEGER IS -- validating ###-##-#### format BEGIN IF TRANSLATE(string_in, '0123456789A', 'AAAAAAAAAAB') = 'AAA-AA-AAAA' THEN RETURN 1; END IF; RETURN 0; END is_ssn; /
-
このユースケースでは戻り値が予想され、プロシージャーはファンクションとして機能するため、[Is function]チェックボックスをオンにします。
-
予想される唯一の戻り値は、[ssn_valid]カラムをベースとしているため、関連するリストエントリーを選択します。
-
[Parameters] (パラメーター)エリアで、プロシージャーに使用する入力および出力パラメーターを定義します。このユースケースでは、スキーマの[SSNumber]カラムのみがプロシージャーで使用されます。
-
プラス記号をクリックしてテーブルにカラムを追加し、関連するカラム ([SSNumber])およびタイプ([IN])を選択します。
-
次に、tLogRowコンポーネントを選択し、[カラムの同期]をクリックして、スキーマが先行するtOracleSPコンポーネントから渡されていることを確認します。
-
[Print values in cells of a table] (テーブルのセルに値を印刷)チェックボックスをオンにすると、出力結果を読みやすくできます。
-
次に、ジョブを保存し、F6を押して実行します。
コンソールで出力結果を読み取ることができます。ストアドプロシージャーのパラメーターとして使用されていない場合でも、すべての入力スキーマカラムが表示されます。
チェックされたSS番号が有効かどうかに関係なく、最終カラムには想定される戻り値が表示されます。