🎯 [F5] で変数を作る
Talendで「変数(コンテキスト変数)」をかんたんに作る方法
→ 特に ショートカットキー [F5] を使う方法 を学びます!
📁 サンプルジョブ「createVariables」の概要
-
読み込むファイル:
labels.txt
-
コンポーネント構成:
-
tFileInputFullRow
(1行まるごと読み込む) -
tLogRow
(内容をコンソールに表示)
-
👣 ステップごとの解説
✅ ステップ1:tFileInputFullRow を使う
-
これは、1行まるごとを1つの文字列として読み込むコンポーネントです
-
カラムの区切りを気にしなくてよいので、スキーマ設定は不要です
設定例:
-
ファイルパス →
Talend/data/in/labels.txt
-
出力 →
tLogRow
に接続(表示モードは「Table」)
✅ ステップ2:ショートカット [F5] で変数を作る!
ここが今日のメインです:
💡 「どの設定項目でも、[F5]キーを押すと変数化できる」
たとえば…
-
ファイルパス欄で
[F5]
を押すと、「context変数を作成する画面」が表示される -
自動的に名前候補と現在の値が入力された状態になっている
設定できる項目:
-
変数名(自動提案されるが自由に変更OK)
-
値(今入力されていた値が入る)
-
型(たとえば
String
やFile
など) -
コメント(必要に応じて)
「Finish」を押すと、すぐに変数が生成され、元の場所が以下のような形式に変わります:
✅ ステップ3:作った変数を確認・修正する
変数を作ると、画面下の「Context」タブに表示されます。
-
ここから後で値を変更したり、手動で削除・追加もできます
-
「Prompt」をONにすると、ジョブを実行するたびに値の入力を求めるダイアログが出る
たとえば、ファイル名の変数を作ったあと実行すると:
🪟「このファイルでOKですか?」というウィンドウが出てくる
→ そこで別のファイルを選ぶこともできる!
✅ ステップ4:変数をやめる(戻す)には?
-
変数にした部分を手動で書き戻せばOK
-
たとえば
((String)context.myVariable)
を"\n"
に戻すなど
-
🎯 変数(Context変数)」の使い方
Talendで「変数(Context変数)」をどう使うのか?
🧪 実行するジョブの例:useVariables
✔ 使用するコンポーネント:
-
tMsgBox
(メッセージボックス)
👣 ステップごとの説明
✅ ステップ1:ジョブを作る
-
新しいジョブを作成:
useVariables
-
中身は空っぽでOK
✅ ステップ2:メッセージボックス(tMsgBox)を追加
-
デフォルトでは「Hello World」と書いてある
-
今回は、「Hello + 名前」 のように、変数を使って表示したい
✅ ステップ3:Context変数を定義
-
下の「Context」タブを開く
-
新しい変数を追加
-
名前:
name
-
値:例として
"John"
など
-
✅ ステップ4:変数を使う
tMsgBox
のメッセージ欄にこう書く:
💡
context.変数名
という書き方で、その変数の中身を呼び出せる
-
入力補完(サジェスト)を使いたければ、
context.
と入力したあとにCtrl + Space
を押すと候補が出る
✅ ステップ5:ジョブを実行!
-
出力メッセージが:
のようになっていれば成功!
🔁 応用:環境ごとの値の切り替え
Talendの「Context変数」は環境(Context Group)ごとに値を変えることができます。
💡 例えばこんな使い方:
環境 | nameの値 |
---|---|
開発環境(DEV) | John |
テスト環境(TEST) | Test太郎 |
本番環境(PROD) | 本番ユーザー |
✅ Contextの環境を追加する手順
-
ジョブ右側の「Configure Contexts」ボタンをクリック
-
default
の他にDEV
,TEST
,PROD
などを追加 -
各環境ごとに、
name
の値を設定する
✅ 実行時に環境を切り替えられる!
ジョブを実行する際に、
どの環境の値を使うか選べるようになる。
たとえば…
-
DEV →
Hello John
-
TEST →
Hello Test太郎
-
PROD →
Hello 本番ユーザー
🎯 データ型について
Talendにおける変数の「データ型(Data Types)」とは?
🛠 使用するコンポーネント
-
tFixedFlowInput
:固定のデータを擬似的に作成するためのコンポーネント -
tJava
:自由にJavaコードを実行できるコンポーネント
使用ジョブ名:variableTypes
📚 Contextタブで定義した変数たち
この例では、すでに多くの変数が定義されています。
それぞれ 名前・データ型・初期値 が設定されています。
Talendで使えるデータ型の一部:
-
String(文字列)
-
Integer(整数)
-
Float(小数)
-
Boolean(真偽)
-
Character(1文字)
-
Date(日付)
-
File(ファイルパス)
-
List of Value(選択式リスト)
🔄 「List Of Value」とは?
変数のデータ型の中に、「選択式のリスト(List of Value)」 があります。
-
いくつかの値を事前に登録しておいて
-
ジョブ実行前に「どれを使うか」選べる ようにすることができます
例えば、以下のような選択肢を作っておいて…
ジョブ実行時にダイアログが出て、どれを使うか選ぶことができます。
これには「Prompt(プロンプト)」にチェックを入れる必要があります。
🧪 変数を使う方法(例:Character型)
✔ 使い方(例)
tFixedFlowInput
の中で、文字のカラム(例:charCol)に
以下のように設定します:
💡 入力補完(候補)を使いたければ:
context.
と入力 →Ctrl + Space
この値を tLogRow
で表示すれば、ターミナルに出力されます。
👨💻 tJava
で変数を表示する例
tJava
を使うと、Javaコードで変数の中身を自由に表示できます:
このように、複数の変数を1つずつ System.out.println()
で出力すれば、変数の中身を一覧で確認できます。
▶ 実行してみる
-
ジョブを実行すると、Listの変数に「Prompt」がある場合、選択画面が出る
-
そこで "12345" を選べば、その値が実行中に使われる
-
出力では、例えば:
-
vCharacter
→'c'
-
vList
→"12345"
(選んだ値)
-
🎯 中央コンテキストの作成
「中央コンテキスト(central context)」を作るには?
🧩 前提知識:Context(コンテキスト)とは?
Talendでは「コンテキスト変数」という仕組みを使って、ジョブの中で再利用できる値(パラメータ)を定義できます。
たとえば以下のような用途で使います:
-
ファイルパスの指定
-
DB接続先
-
実行環境ごとの切り替え(開発・テスト・本番)
-
決まったメッセージの表示 など
🧪 今回のジョブ構成
-
ジョブ名:
centralVariables
-
tMsgBox
を2つ使って、2つの変数を表示する -
2つの変数:
-
local
:ローカル変数(そのジョブ内だけ) -
central
:将来的に「中央コンテキスト」として外出しする変数
-
🛠 ステップ1:ローカル変数を使ってジョブを作成
最初は、ジョブ内で普通に2つの変数を定義します。
-
Context
タブで以下のように定義:
名前 | 値 |
---|---|
local | local |
central | central |
tMsgBox
を2つ使って、それぞれ context.local
と context.central
を表示するように設定。実行すると、2つのメッセージボックスが順番に表示されます。
🧠 ステップ2:「中央コンテキスト」に変数を移動する方法
方法①:リポジトリから作成する
-
画面左の「Repository」ビューから「Contexts」を右クリック
-
「Create context group」を選ぶ
-
新しいコンテキストグループ(例:
myCentralContextGroup
)を作成 -
そこに変数を手動で定義していく
方法②:ジョブからまとめて移動(おすすめ)
-
Contextタブ内の変数を右クリック → 「Add to repository context」
-
新しく作る場合は、「新しいContext Groupの作成」を選択し、名前を入力
(例:myCentralContextGroup
) -
これで、選んだ変数がリポジトリ管理の変数に移行されます
📝 注意:移行後はジョブ側では値の直接編集ができなくなります(参照専用になります)
🔧 ステップ3:リポジトリで値を変更する
-
左側の「Repository」から該当の
Context Group
をダブルクリックして編集 -
例:変数
central
の値を"now really central"
に変更 -
「Finish」をクリックすると、「このContextを使っているジョブを更新するか?」と聞かれる →「Yes」
-
すると、ジョブ内の変数も自動で最新の値に更新される
▶ 実行して確認
ジョブを再実行すると…
-
最初のメッセージボックスは「local」
-
2番目のメッセージボックスは「now really central」
が表示されるようになります。
🎯 メタデータのための変数作成
Talendで「メタデータのための変数(context変数)」を作る方法とは?
🧩 背景知識:接続情報には3種類の管理方法がある
Talendでは、**データベースの接続設定(ホスト、ユーザ名、パスワードなど)**を、以下の3通りで管理できます:
方法 | 説明 |
---|---|
① Built-in(組み込み) | そのジョブだけで完結する。すべて手入力 |
② Repository(リポジトリ) | 事前に定義された接続を使い回す。複数ジョブで共通化可能 |
③ Repository with Context(リポジトリ+変数) | Repositoryの中身を Context変数 に外出しして使う。 → 本番・テスト環境などで値を切り替えるのに便利 |
🎬 今回のデモジョブ「metadataVariables」
このジョブでは、同じクエリを3つのやり方で実行して違いを見せています。
✅ サブジョブ①:Built-in 方式
-
接続情報を手入力で設定
-
そのジョブだけに閉じたやり方
✅ サブジョブ②:Repository 方式
-
左の「Metadata」→「DB接続」から作った
mysql
という接続を選択 -
接続情報はリポジトリで管理
-
ジョブ間での使い回しが可能
✅ サブジョブ③:Repository with Context 方式 ← 今回の本題!
-
Repositoryで管理している接続情報を、Context変数に変換して使う
🛠 Context変数で接続情報を管理する手順
ステップ1:既存のDB接続を複製
-
左の「Metadata」→「DB接続」から
mysql
を右クリックして「Duplicate」 -
名前を
mysqlContext
などに変更
ステップ2:「Export as context」でContext変数化
-
新しく作った
mysqlContext
をダブルクリックで編集 -
「Next」へ進むと、接続情報一覧が表示される
-
画面下の「Export as context」をクリック
-
新しい Context Group を作成(例:
dbContextGroup
) -
「Next」→「Finish」で完了
→ 接続情報(ホスト名、ユーザ名、パスワードなど)が、すべてContext変数に置き換わる
📝 補足:
この状態では、リポジトリ内の mysqlContext
は、context変数を使ってDB接続するようになっています。
🧪 ステップ3:ジョブでこの接続を使う
-
新しいサブジョブを作る(
tDBInput
など) -
左のリポジトリから
mysqlContext
をドラッグ&ドロップ -
このとき、「関連するContext Groupをインポートしますか?」と聞かれる → 「Yes」
-
インポートが成功すると、ジョブ内の「Contexts」タブに
dbContextGroup
が追加される
もし後から追加したくなった場合でも、
Context Group をドラッグ&ドロップすれば手動で追加できます。
▶ 実行して確認
ジョブを実行すると、以下の3パターンでDBクエリが実行されます:
-
Built-in(手入力)
-
Repository(接続定義の使い回し)
-
Repository + Context(接続定義 + 変数化で柔軟対応)
🎯 外部ファイルから変数を読み込む
Talendで外部ファイルから変数(コンテキスト)を読み込む方法
キーワードは:
-
tContextDump
(変数をファイルに出力) -
tContextLoad
(変数をファイルから読み込む)
🧩 なぜ外部変数を使うの?
Talendのジョブで使うパラメータ(変数)を外部ファイルで管理できるようになると、以下のメリットがあります:
-
本番/テスト/開発などの環境で、値だけ切り替えできる
-
値を再利用・一括変更しやすくなる
-
ジョブを修正せずに、値だけ変えて再実行できる
💡 使うコンポーネント
コンポーネント | 役割 |
---|---|
tContextDump | コンテキスト変数をCSVに書き出す |
tContextLoad | CSVなどの外部ファイルから変数を読み込む |
🛠 デモジョブ「variableLoad」の流れ
このジョブは、前半で変数を出力し、後半でそれを読み込む構成です。
🧱 前半:変数を書き出す(エクスポート)
-
ジョブには最初から4つのコンテキスト変数がある(例:
cString
,cInteger
,cDate
,cCharacter
) -
tPreJob
→tSetGlobalVar
:
変数paramFile
に書き出し先のパスを格納(例:Talend/data/params/context.csv
) -
tContextDump
:
すべての変数をCSVファイルとして保存(形式はkey
,value
)
🔎 ポイント:
tContextDump
の出力先を ((String)globalMap.get("paramFile"))
のようにしておくことで、
動的にパスを切り替えられます。
📂 実際の出力ファイル(例)
📥 後半:変数を読み込む(インポート)
-
tContextLoad
を使って、同じcontext.csv
を読み込む -
読み込んだ変数は、ジョブ内のコンテキスト変数として上書きされる
-
以下の設定を行う:
項目 | 意味 |
---|---|
✔ Print operations | 読み込んだ変数をコンソールに表示 |
✔ Die on error | 必要な変数が読み込まれなかった場合にジョブを停止 |
⚠ If variable loaded but not in context | 余計な変数がファイルにあっても「警告」で済ませる |
⚠️ 想定されるケースと対処
ケース①:必要な変数がファイルにない
-
エラーが出る(
Die on error
が有効な場合、ジョブが止まる)
ケース②:ファイルに不要な変数がある
-
コンテキストに定義されていない変数 → 警告のみ(ジョブは続行)
ケース③:値を上書きして使いたい
-
たとえば、
cCharacter
を'c'
→'3'
に変えて保存して実行
→ 変更内容が正しく読み込まれる
📝 補足:tSetGlobalVar の使い方
tSetGlobalVar
は、任意の変数を「globalMap」に登録するコンポーネントです。
このように書いて呼び出します:
これで、paramFile
に登録したパスを使ってファイル操作ができます。
🎯 Implicit(暗黙的)」な変数読み込み
Talendで「Implicit(暗黙的)」に変数(コンテキスト)を読み込む方法
✅ 背景:「明示的な読み込み」は面倒?
前回の説明では、変数を外部ファイルから読み込むのに tContextLoad
コンポーネント を使いましたね。
でも実は、毎回ジョブの中でこういう風に:
-
tPreJob
-
tContextLoad
-
ファイルパスの指定
-
変数のエラーチェック設定
…といった設定を毎回行うのは、手間がかかります。
💡 解決策:「Implicit Context Load」
Talendには、「暗黙的に変数を読み込む仕組み」 があります。
これは、ジョブの中に何のコンポーネントも置かずに、ジョブの設定だけで変数を外部ファイルから読み込ませる方法です。
🛠 実装方法:Implicit Context Load の設定手順
① ジョブを開く
今回の例では implicitVariableLoad
というジョブです。
② ジョブ設定タブを開く
-
上部メニューの「Job」タブ →
-
「Extra(追加設定)」というサブタブを選択
③ 「Implicit tContextLoad」を有効化
✔️ チェックボックスにチェックを入れると有効になります。
そして以下の項目を設定します:
項目 | 内容 |
---|---|
Context Load From | 「File(ファイル)」を選択(またはDBも可) |
ファイルパス | 例:Talend/data/params/context.csv |
区切り文字 | カンマなど(通常は, ) |
Print operations | コンソールに読み込み内容を表示するならチェック |
Not in context → Warning | ジョブで使っていない変数は「警告」にとどめる |
In context but missing → Error | 必要な変数がファイルに無ければ「エラー」にする |
④ コンテキスト変数を事前に定義しておく
暗黙的読み込みでは、ジョブ上で使いたい変数を あらかじめ Talend の「Context」タブで定義しておく必要があります。
例:
📂 利用するファイルの中身(例:context.csv)
cString
と cDouble
はジョブで使う変数。otherParam
は使ってない変数です。
▶ 実行結果の違い
状態 | 結果 |
---|---|
Implicit未使用 | cString="" , cDouble=0.0 (初期値のまま) |
Implicit有効 + ファイルあり | cString="now from file" , cDouble=123.45 に変わる |
ファイルに不要な変数あり | 警告は出るが、ジョブは続行 |
ファイルに必要な変数がない | エラーでジョブが停止(設定次第) |
✅ まとめ
方法 | メリット | デメリット |
---|---|---|
明示的 (tContextLoad ) | 柔軟に処理フローに組み込める | 面倒な設定が必要 |
暗黙的(Implicit Load) | 設定だけで完結。スッキリ | 柔軟性はやや少ない |
🎯 グローバル変数の使い方
Talendで「グローバル変数(Global Variables)」はどう使うの?
✅ グローバル変数って何?
Talendでは、ジョブの実行中に使い回せる変数として以下の2種類があります:
種類 | 特徴 |
---|---|
コンテキスト変数 | あらかじめ定義して使う(Contextタブで定義) |
グローバル変数 | ジョブの途中で tSetGlobalVar などを使って設定できる |
🔧 グローバル変数の作り方:tSetGlobalVarを使う
👇 例:
これはつまり、
-
myGlobalVar
という名前のグローバル変数を作る -
その値は
"global_"
に加えて、コンテキスト変数context.environment
の値を結合
という処理です。
💬 コンテキスト変数との違いは?
比較項目 | コンテキスト変数 | グローバル変数 (tSetGlobalVar ) |
---|---|---|
定義する場所 | Contextタブ | コンポーネントとしてフロー中に定義 |
値の設定方法 | あらかじめ定義するか、tContextLoad などで読み込む | フローの中で明示的にセットする(手動) |
複数定義できる? | できる(まとめて設定できる) | 1つずつしか定義できない |
実行時に変更できる? | できる | できる(そのために使う) |
🪄 グローバル変数を使う方法
たとえば、tMsgBox
コンポーネントで、先ほど設定したグローバル変数を表示するには:
-
入力欄に「tSet」と入力
-
[Ctrl] + [Space] を押す → 補完候補が出る
-
((String)globalMap.get("myGlobalVar"))
のような形に自動変換される
✅ グローバル変数はこのように globalMap.get("変数名")
の形で呼び出します。
▶ 実行してみると…
-
context.environment
の値が"dev"
なら
👉 表示される値はglobal dev
というように、グローバル変数の値が表示されます。
🎓 補足:いつグローバル変数を使うべき?
グローバル変数はこんなときに便利です:
-
コンテキスト変数以外に、一時的な値を渡したいとき
-
あるサブジョブで作った値を、後ろの処理でも使いたいとき
-
データベースから読み取った1行の値を、他の処理に流用したいとき
✅ まとめ
ポイント | 内容 |
---|---|
tSetGlobalVar を使う | 実行時に変数を定義できる |
値は globalMap.get("変数名") で取得 | Stringなどにキャストして使用 |
コンテキスト変数と使い分ける | 設定のしやすさ・一時的かどうかで選ぶとよい |