Talend変数など

 


🎯 [F5] で変数を作る

Talendで「変数(コンテキスト変数)」をかんたんに作る方法
→ 特に ショートカットキー [F5] を使う方法 を学びます!


📁 サンプルジョブ「createVariables」の概要

  • 読み込むファイル:labels.txt

  • コンポーネント構成:

    1. tFileInputFullRow(1行まるごと読み込む)

    2. tLogRow(内容をコンソールに表示)


👣 ステップごとの解説

✅ ステップ1:tFileInputFullRow を使う

  • これは、1行まるごとを1つの文字列として読み込むコンポーネントです

  • カラムの区切りを気にしなくてよいので、スキーマ設定は不要です

設定例:

  • ファイルパス → Talend/data/in/labels.txt

  • 出力 → tLogRow に接続(表示モードは「Table」)


✅ ステップ2:ショートカット [F5] で変数を作る!

ここが今日のメインです:

💡 「どの設定項目でも、[F5]キーを押すと変数化できる」

たとえば…

  • ファイルパス欄で [F5] を押すと、「context変数を作成する画面」が表示される

  • 自動的に名前候補と現在の値が入力された状態になっている

設定できる項目:

  • 変数名(自動提案されるが自由に変更OK)

  • 値(今入力されていた値が入る)

  • 型(たとえば StringFile など)

  • コメント(必要に応じて)

「Finish」を押すと、すぐに変数が生成され、元の場所が以下のような形式に変わります:

((String)context.myVariable)

✅ ステップ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変数を定義

  1. 下の「Context」タブを開く

  2. 新しい変数を追加

    • 名前:name

    • 値:例として "John" など


✅ ステップ4:変数を使う

tMsgBox のメッセージ欄にこう書く:

"Hello " + context.name

💡 context.変数名 という書き方で、その変数の中身を呼び出せる

  • 入力補完(サジェスト)を使いたければ、context. と入力したあとに Ctrl + Space を押すと候補が出る


✅ ステップ5:ジョブを実行!

  • 出力メッセージが:

Hello John

のようになっていれば成功!


🔁 応用:環境ごとの値の切り替え

Talendの「Context変数」は環境(Context Group)ごとに値を変えることができます。

💡 例えばこんな使い方:

環境nameの値
開発環境(DEV)John
テスト環境(TEST)Test太郎
本番環境(PROD)本番ユーザー

✅ Contextの環境を追加する手順

  1. ジョブ右側の「Configure Contexts」ボタンをクリック

  2. default の他に DEV, TEST, PROD などを追加

  3. 各環境ごとに、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)」 があります。

  • いくつかの値を事前に登録しておいて

  • ジョブ実行前に「どれを使うか」選べる ようにすることができます

例えば、以下のような選択肢を作っておいて…

["12345", "abc", "true"]

ジョブ実行時にダイアログが出て、どれを使うか選ぶことができます。
これには「Prompt(プロンプト)」にチェックを入れる必要があります。


🧪 変数を使う方法(例:Character型)

✔ 使い方(例)

tFixedFlowInput の中で、文字のカラム(例:charCol)に
以下のように設定します:

context.vCharacter

💡 入力補完(候補)を使いたければ:context. と入力 → Ctrl + Space

この値を tLogRow で表示すれば、ターミナルに出力されます。


👨‍💻 tJava で変数を表示する例

tJava を使うと、Javaコードで変数の中身を自由に表示できます:

System.out.println("vCharacter: " + context.vCharacter);

このように、複数の変数を1つずつ System.out.println() で出力すれば、変数の中身を一覧で確認できます。


▶ 実行してみる

  1. ジョブを実行すると、Listの変数に「Prompt」がある場合、選択画面が出る

  2. そこで "12345" を選べば、その値が実行中に使われる

  3. 出力では、例えば:

    • vCharacter'c'

    • vList"12345"(選んだ値)


🎯 中央コンテキストの作成

「中央コンテキスト(central context)」を作るには?


🧩 前提知識:Context(コンテキスト)とは?

Talendでは「コンテキスト変数」という仕組みを使って、ジョブの中で再利用できる値(パラメータ)を定義できます。
たとえば以下のような用途で使います:

  • ファイルパスの指定

  • DB接続先

  • 実行環境ごとの切り替え(開発・テスト・本番)

  • 決まったメッセージの表示 など


🧪 今回のジョブ構成

  • ジョブ名:centralVariables

  • tMsgBox を2つ使って、2つの変数を表示する

  • 2つの変数:

    • local:ローカル変数(そのジョブ内だけ)

    • central:将来的に「中央コンテキスト」として外出しする変数


🛠 ステップ1:ローカル変数を使ってジョブを作成

最初は、ジョブ内で普通に2つの変数を定義します。

  • Context タブで以下のように定義:

名前
locallocal
centralcentral

そして、tMsgBox を2つ使って、それぞれ context.localcontext.central を表示するように設定。

実行すると、2つのメッセージボックスが順番に表示されます。


🧠 ステップ2:「中央コンテキスト」に変数を移動する方法

方法①:リポジトリから作成する

  1. 画面左の「Repository」ビューから「Contexts」を右クリック

  2. 「Create context group」を選ぶ

  3. 新しいコンテキストグループ(例:myCentralContextGroup)を作成

  4. そこに変数を手動で定義していく

方法②:ジョブからまとめて移動(おすすめ)

  1. Contextタブ内の変数を右クリック → 「Add to repository context」

  2. 新しく作る場合は、「新しいContext Groupの作成」を選択し、名前を入力
    (例:myCentralContextGroup

  3. これで、選んだ変数がリポジトリ管理の変数に移行されます

📝 注意:移行後はジョブ側では値の直接編集ができなくなります(参照専用になります)


🔧 ステップ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接続を複製

  1. 左の「Metadata」→「DB接続」から mysql を右クリックして「Duplicate」

  2. 名前を mysqlContext などに変更

ステップ2:「Export as context」でContext変数化

  1. 新しく作った mysqlContext をダブルクリックで編集

  2. 「Next」へ進むと、接続情報一覧が表示される

  3. 画面下の「Export as context」をクリック

  4. 新しい Context Group を作成(例:dbContextGroup

  5. 「Next」→「Finish」で完了
    → 接続情報(ホスト名、ユーザ名、パスワードなど)が、すべてContext変数に置き換わる

📝 補足:
この状態では、リポジトリ内の mysqlContext は、context変数を使ってDB接続するようになっています。


🧪 ステップ3:ジョブでこの接続を使う

  1. 新しいサブジョブを作る(tDBInput など)

  2. 左のリポジトリから mysqlContext をドラッグ&ドロップ

  3. このとき、「関連するContext Groupをインポートしますか?」と聞かれる → 「Yes」

  4. インポートが成功すると、ジョブ内の「Contexts」タブに dbContextGroup が追加される

もし後から追加したくなった場合でも、
Context Group をドラッグ&ドロップすれば手動で追加できます。


▶ 実行して確認

ジョブを実行すると、以下の3パターンでDBクエリが実行されます:

  1. Built-in(手入力)

  2. Repository(接続定義の使い回し)

  3. Repository + Context(接続定義 + 変数化で柔軟対応)



🎯 外部ファイルから変数を読み込む

Talendで外部ファイルから変数(コンテキスト)を読み込む方法

キーワードは:

  • tContextDump(変数をファイルに出力)

  • tContextLoad(変数をファイルから読み込む)


🧩 なぜ外部変数を使うの?

Talendのジョブで使うパラメータ(変数)を外部ファイルで管理できるようになると、以下のメリットがあります:

  • 本番/テスト/開発などの環境で、値だけ切り替えできる

  • 値を再利用・一括変更しやすくなる

  • ジョブを修正せずに、値だけ変えて再実行できる


💡 使うコンポーネント

コンポーネント役割
tContextDumpコンテキスト変数をCSVに書き出す
tContextLoadCSVなどの外部ファイルから変数を読み込む

🛠 デモジョブ「variableLoad」の流れ

このジョブは、前半で変数を出力し、後半でそれを読み込む構成です。


🧱 前半:変数を書き出す(エクスポート)

  1. ジョブには最初から4つのコンテキスト変数がある(例:cString, cInteger, cDate, cCharacter

  2. tPreJobtSetGlobalVar
    変数 paramFile に書き出し先のパスを格納(例:Talend/data/params/context.csv

  3. tContextDump
    すべての変数をCSVファイルとして保存(形式は key, value

🔎 ポイント:
tContextDump の出力先を ((String)globalMap.get("paramFile")) のようにしておくことで、
動的にパスを切り替えられます。


📂 実際の出力ファイル(例)

key,value
cString,hello cInteger,123 cDate,2025-07-26 cCharacter,c

📥 後半:変数を読み込む(インポート)

  1. tContextLoad を使って、同じ context.csv を読み込む

  2. 読み込んだ変数は、ジョブ内のコンテキスト変数として上書きされる

  3. 以下の設定を行う:

項目意味
Print operations読み込んだ変数をコンソールに表示
Die on error必要な変数が読み込まれなかった場合にジョブを停止
If variable loaded but not in context余計な変数がファイルにあっても「警告」で済ませる

⚠️ 想定されるケースと対処

ケース①:必要な変数がファイルにない

  • エラーが出る(Die on error が有効な場合、ジョブが止まる)

ケース②:ファイルに不要な変数がある

  • コンテキストに定義されていない変数 → 警告のみ(ジョブは続行)

ケース③:値を上書きして使いたい

  • たとえば、cCharacter'c''3' に変えて保存して実行
    → 変更内容が正しく読み込まれる


📝 補足:tSetGlobalVar の使い方

tSetGlobalVar は、任意の変数を「globalMap」に登録するコンポーネントです。
このように書いて呼び出します:

((String)globalMap.get("paramFile"))

これで、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」タブで定義しておく必要があります。

例:

cString = ""
cDouble = 0.0

📂 利用するファイルの中身(例:context.csv)

key,value
cString,now from file cDouble,123.45 otherParam,some value

cStringcDouble はジョブで使う変数。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を使う

👇 例:

tSetGlobalVar
Name: myGlobalVar Value: "global_" + context.environment

これはつまり、

  • myGlobalVar という名前のグローバル変数を作る

  • その値は "global_" に加えて、コンテキスト変数 context.environment の値を結合

という処理です。


💬 コンテキスト変数との違いは?

比較項目コンテキスト変数グローバル変数 (tSetGlobalVar)
定義する場所Contextタブコンポーネントとしてフロー中に定義
値の設定方法あらかじめ定義するか、tContextLoadなどで読み込むフローの中で明示的にセットする(手動)
複数定義できる?できる(まとめて設定できる)1つずつしか定義できない
実行時に変更できる?できるできる(そのために使う)


🪄 グローバル変数を使う方法

たとえば、tMsgBox コンポーネントで、先ほど設定したグローバル変数を表示するには:

  1. 入力欄に「tSet」と入力

  2. [Ctrl] + [Space] を押す → 補完候補が出る

  3. ((String)globalMap.get("myGlobalVar")) のような形に自動変換される

✅ グローバル変数はこのように globalMap.get("変数名") の形で呼び出します。


▶ 実行してみると…

  • context.environment の値が "dev" なら
    👉 表示される値は global dev

というように、グローバル変数の値が表示されます。


🎓 補足:いつグローバル変数を使うべき?

グローバル変数はこんなときに便利です:

  • コンテキスト変数以外に、一時的な値を渡したいとき

  • あるサブジョブで作った値を、後ろの処理でも使いたいとき

  • データベースから読み取った1行の値を、他の処理に流用したいとき


✅ まとめ

ポイント内容
tSetGlobalVar を使う実行時に変数を定義できる
値は globalMap.get("変数名") で取得Stringなどにキャストして使用
コンテキスト変数と使い分ける設定のしやすさ・一時的かどうかで選ぶとよい



前の記事:Talend そのほかの形式の操作について

次の記事:Talend Transformation