6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Talend入門 (7) ~Context変数~

Last updated at Posted at 2019-03-24

##全体の目的
Talendの超簡単なサンプルジョブを作成して,ETLジョブ開発に必要なスキルを習得することが目的です。

##対象者
ETL / EAI技術者

##環境

使用環境 バージョン
OS Windows10
Talend 7.1.1

##サンプル一覧
以下の順番で習得していきます

# 内容
1 はじめてのTalend
2 ファイルI/O
3 データベースI/O
4 tMap
5 イテレータ
6 メタデータ
7 Context変数(今回)
8 Global Map
9 tHashInput/tHashOutput
10 エラーハンドリング
11 ロギング
12 子ジョブ(ジョブのネスト)
13-1 設定ファイル読み込みオリジナル版
13-2 設定ファイル読み込みコンポ版
14 tJava

サンプルコード(Talendプロジェクトデータ)

##今回の目的
Context変数ついて理解する。

##サンプルプログラム概要
パラメータとして2つの実行時引数を必要とするプログラムを作ってみます。

##Context変数とは
ジョブ内で扱うことのできる変数です。一般的な開発言語でいうところのグローバル変数という理解でOKです。

Context変数の定義

それではサンプルジョブを作成していきましょう。
リポジトリの[ジョブ]を右クリックし[ジョブの作成]を選択します。
[名前]に"context"と入力し[Finish]ボタンをクリックします。
GS000048.png

[Contexts(context)]タブを開き[+]ボタンを2回クリックします。
GS000049.png

以下ように2つのContext変数を定義します。

Name Comment value
ctx_corp_no 法人番号 A0001
ctx_date 処理日付 2019-03-24
GS000050.png

Context変数の呼び出し

デザインワークスペースに[tFixedFlowInput]と[tLogRow]を配置します。
[tFixedFlowInput]はContext変数の読み出しに利用、[tLogRow]は出力に利用します。
GS000051.png

[tFixedFlowInput]のスキーマの編集画面を開き、2カラムを定義します。

# カラム
1 corpno
2 date

GS000052.png

このような状態です。モードはシングルテーブルの使用で設定します。
GS000053.png

次にcorpnoの値にContext変数で定義した ctx_corp_no を設定したいのですが、ここで下記のように con まで入力したところで Ctrl + スペース を入力します。
GS000054.png

するとこのように設定可能な候補を表示させることができます。
GS000056b.png

Context変数で準備した値をそれぞれのカラムの値として設定します。

Column
corpno context.ctx_corp_no
date context.ctx_date

GS000057.png

tLogRowとロウでつなぎます。
GS000058.png

実行

これで準備は完了です。実行してみましょう。
Context変数をジョブ内で利用できることが確認できました。
GS000059c.png

実行時引数として値を渡す

実はContext変数として定義した値はそのまま実行時引数として使うことができます。

Talendとは切り離したJava VM上で実行するために先ほどのジョブをエクスポートします。
GS000059d.png

いつも通りです。
GS000060.png

エクスポートした context_0.1.zip を解凍するとこんな感じ。
GS000061.png

context_run.bat をコマンドプロンプトで実行します。
Talend上で実行したものと同じ結果が出力されます。
GS000062a.png

最後に今回の本題となる実行時引数としてパラメータ(Context変数)を書き換えてみます。
以下のフォーマットでContext変数および値を指定します。
--context_param 定義したContext変数名=設定したい値

  • 2つとも書き換えるのでコマンドラインに以下を追加します。
    • --context_param ctx_corp_no=Z9991
    • --context_param ctx_date=2019-01-01

GS000067.png

実行結果です。
出力結果が変わった(Context変数を上書きした)ことを確認できました。
GS000068a.png

##まとめ
今回はContext変数について学びました。
ポイントは以下2点ですね。

  • ジョブ内でグローバル変数として利用できる。
  • 実行時引数として利用できる。

毎度のことですが、ほんのさわりの部分だけを解説していますのでぜひここから深掘りしてみてください。

##次回以降
次回はGlobal Mapをやっていきます。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?