[Talend Open Studio Data Integration] グローバル変数を定義する2つの方法
Talend でグローバル変数を扱う
Talend のジョブの中で共通して使いたい変数がある場合、グローバル変数 (Global Variable) という機能を利用することが出来ます。プログラミングであれば、グローバル変数というプログラム全体で利用できる変数を定義しますが、Talend でも1つのジョブの中で共通して使うことが出来る変数を指します。グローバル変数を利用すれば、ジョブ内のコンポーネントそれぞれに値を書かずに済みます。一箇所で定義を変えれば、その変数を参照するコンポーネントの値を全て変更することが可能になります。
Talend ではいくつかの方法でグローバル変数を定義できますが、ここでは2つの方法を説明していきます。
tSetGlobalVar コンポーネントを使ってグルーバル変数を定義する
tSetGlobalVar コンポーネントを使うと、簡単にグローバル変数を定義することが出来ます。グローバル変数は必ず変数名と値の組み合わせで定義します。では早速 tSetGlobalVar コンポーネントを使ったサンプルジョブを見ていきます。以下のように tSetGlobalVar コンポーネントと、tJava コンポーネントを配置し、"On Subjob OK" で接続します。
次に tSetGlobalVar コンポーネントの設定で、緑色のプラスボタン (+) を押して Key には "foo" を入力し、Value には TalendDate.getDate("YYYY-MM-dd HH:mm:ss") と入力します。なお TalendDate.getDate("YYYY-MM-dd HH:mm:ss") は現在日時を返してくれる関数です。このように値には関数を書くことも出来ます。
次に tJava コンポーネントの設定を開き、Code に System.out.println(globalMap.get("foo")); と記述します。globalMap.get("変数名") というのが、グローバル変数の中から "変数名" で定義された値を取得する関数です。tSetGlobalVar コンポーネントで foo という変数名を定義しましたので、globalMap.get("foo") とすることで定義された値を取得することが出来ます。
また System.out.println は Java 言語で、画面にデータを出力する命令です。
それではジョブを実行してみましょう。実行すると下の図のように現在日時が表示されてます。
このように tSetGlobalVar で定義した値は、同じジョブの中の他のコンポーネントから容易に取得することが出来ます。
tJava コンポーネントを使ってグローバル変数を定義する
先程は tSetGlobalVar コンポーネントを使ってグローバル変数を定義しましたが、今度は tJava コンポーネントを使ってグローバル変数を定義してみます。次にように2つの tJava コンポーネントを配置して "On Subjob OK" で接続します。
そして下の図のように tJava_1 の設定を開いて、Code 欄に次のように入力します。globalMap.put という命令は、1番目の引数に変数名を定義し (ここでは "current_timestamp")、2番目の引数に設定したい値や Java 関数を書きます。これにより指定した変数名でグローバル変数として登録されます。
globalMap.put("current_timestamp", TalendDate.getDate("YYYY-MM-dd HH:mm:ss"));
さらに下の図のように tJava_2 の設定を開いて次のように Code 欄に入力します。このコードはグローバル変数に定義された値を画面に出力する命令です。
System.out.println(globalMap.get("current_timestamp"));
ではジョブを実行してみましょう。下の図の赤枠内に表示されているように、現在日時を tJava_1 で定義して、その値を tJava_2 で取得して画面に表示することが出来ました。