Talend そのほかの形式の操作について

 


🎯 JSONファイルからデータを読み取る

Talendを使ってJSONファイル(store.json)からデータを読み取る方法を学びます。


🧩 使う主なコンポーネント

コンポーネント名説明
tFileInputJSONJSONファイルを読み込む
tLogRow読み込んだデータを画面に表示する
Repository → MetadataJSON構造を事前に定義して再利用できるようにする


📁 読み込むファイル「store.json」の構造(例)

{
"store": { "name": "Sunshine Department Store", "goods": { "bicycle": { "type": "Giant", "color": "white", "price": "276" }, "books": [ { "title": "Book A", "price": "20" }, { "title": "Book B", "price": "25" } ] } } }

🪜 ステップバイステップ解説


✅ ステップ①:JSONファイルを1項目ずつ読む(ループなし)

  1. ジョブを新規作成(例:jsonFiles2

  2. tFileInputJSON を配置し、store.json ファイルを指定

  3. JsonPath without loop(ループなし)」モードを選択
     → 単純な1つの値(例:店舗名)を取り出すときに使う

  4. スキーマを編集して1つのカラムを追加:

    • 名前:storeName

    • データ型:String

    • JsonPath:$.store.name(ドル記号 $ はルートを意味)

  5. tLogRow とつなぎ、「Tableモード」で表示

  6. 実行結果(例):

    storeName
    ------------------------------ Sunshine Department Store

✅ ステップ②:複数のフィールドを読む(ループなし)

  1. さらにスキーマに3つのカラムを追加:

    カラム名JsonPath
    bicycleType$.store.goods.bicycle.type
    bicycleColor$.store.goods.bicycle.color
    bicyclePrice$.store.goods.bicycle.price
    すべて文字列(String)でOK
  2. tLogRow と再び接続して実行
     ※スペルミス注意!例:bicycle に「c」が抜けると null になります。

  3. 実行結果(例):

    storeName | bicycleType | bicycleColor | bicyclePrice
    ---------------------------|-------------|---------------|--------------- Sunshine Department Store | Giant | white | 276

✅ ステップ③:JSONの配列(ループ)を読む

ここが少し高度になりますが、Talendの「Metadata」機能を使えば簡単です。

🔄 「books」配列を読み取る

  1. Repository > Metadata > File JSON に移動し、「Create JSON」を選択
    名前:booksJson

  2. 「Input JSON(入力用)」を選び、store.json を選択

  3. プレビュー画面が出る(うまく表示されない場合は拡張子に注意)

  4. Path Loop Expression に次を指定:

    $.store.goods.books[*]

    [*] は配列をループして読む意味

  5. 抜き出したい項目を選択(例:title, price

  6. 必要なら store.name も含めることが可能(共通の値)

  7. スキーマを確認し、Finish


✅ ステップ④:定義した JSON をジョブに使う

  1. Repository にできた booksJson をジョブにドラッグ&ドロップ

  2. tFileInputJSON に変換される(自動)

  3. tLogRow とつなぎ、「Sync columns」をクリックしてカラムを反映

  4. tLogRow を「Tableモード」にして実行

  5. 実行結果(例):

    storeName | title | price
    --------------------------|--------|------- Sunshine Department Store | Book A | 20 Sunshine Department Store | Book B | 25

🔁 ループあり・なしの違いまとめ

読み方使うモード用途
ループなしJsonPath without loop単体の項目を読む(例:店名、1つのオブジェクト)
ループありJsonPath(ループ使用)配列(リスト)を読む(例:本の一覧など)


✅ よくあるエラーと対処

問題内容原因対処法
null と表示されるJsonPathが間違っているスペルや構造を確認
警告が出る必要なライブラリが未インストールコンポーネント上部の「Install」ボタンを押す
JSONファイルが見つからない拡張子の大文字・小文字問題*.json を選び直す


✨ 補足:JSONPathって何?

JSONの中のデータを指定する住所のようなもの
以下のように書きます:

JSONの構造JSONPath
store.name$.store.name
store.goods.bicycle.color$.store.goods.bicycle.color
books 配列内の title$.store.goods.books[*].title


📝 XMLファイルで読み込む

XMLファイル(film_actor.xml)をTalendで読み込む方法を学びます。


📂 対象ファイル:「film_actor.xml」

このファイルには以下のような情報が入っています:

  • 映画(film)ごとの情報(ID、タイトル、説明)

  • 映画に出演している俳優(actor)のリスト(ID、名、姓)

こんな構造です:

<films>
<film> <film_id>1</film_id> <title>Some Title</title> <description>Some Description</description> <actors> <actor> <actor_id>10</actor_id> <first_name>John</first_name> <last_name>Doe</last_name> </actor> <!-- more actors --> </actors> </film> <!-- more films --> </films>

✅ Talendでの手順まとめ:

① 新しいジョブを作る

  • ジョブ名は「xmlFiles」などにして作成。


② XMLのスキーマを定義する(これが超大事)

  1. リポジトリMetadataFile XML → 右クリック → 「Create file xml」

  2. 任意の名前を付けて「Next」

  3. ファイルの種類は「Input XML(読み取り)」を選ぶ

  4. 対象ファイルを選ぶ:「film_actor.xml」

  5. ループの設定
    → 1人ずつ俳優を読み込むようにするので、/film/actors/actorを「XPath Loop」にドラッグ

  6. 取り出す項目を設定(ドラッグでOK)

    • 俳優情報(actor_id、first_name、last_name)

    • 映画情報(film_id、title、description)

  7. 「Refresh Preview(プレビュー)」で読み取れているか確認

  8. 問題なければ「Finish」


③ コンポーネントとして使う

  • 今作った「film_actor.xml」の定義をジョブ画面にドラッグ
    → 自動的にtFileInputXMLコンポーネントになる

  • それをtLogRowにつないで、データをコンソールに表示(出力モードは「Table」)


④ データの並べ替えや加工(オプション)

A. カラム順の入れ替え(tFilterColumns)

  • descriptionを削除し、film_idtitleを先頭に持ってくる

B. 並び替え(tSortRow)

  • actor_idで並べ替え
    → 同じ俳優が複数の映画に出ているか確認しやすくなる

  • 必要に応じてfilm_idも追加


💡 補足:なぜMetadataから定義するの?

  • XMLは構造が複雑なので、自分で手入力するより、Wizard(ウィザード)を使って定義した方が簡単で確実

  • 一度作った定義は再利用・更新も簡単(Repositoryからドラッグするだけ)



Google Driveに接続ファイル一覧を取得

TalendからGoogle Driveに接続して、
Drive内のフォルダにあるファイル一覧を取得する方法を学びます。


🔧 全体の流れ(ざっくり言うと)

  1. Google Drive APIの利用申請(Google Cloud Console)

  2. Talendで接続設定(OAuthで認証)

  3. Talendのジョブでフォルダ内のファイル一覧を取得(tGoogleDriveList)


🏁 事前準備(Google側)

① Google Driveにフォルダを作る

  • https://drive.google.com にアクセス

  • 例:「talend」という名前のフォルダを作成し、何かファイルを入れておく

② Google Cloud Console にアクセス

③ プロジェクトを作る

  • 「プロジェクトを選択」→「新しいプロジェクト」

  • 名前は何でもOK(例:「TalendDrive」)

  • 作成して、「プロジェクトを選択」する


🚀 Google Drive APIを有効にする

① 左側メニュー →「APIとサービス」→「APIとサービスを有効化」

② 検索バーで「Google Drive API」と検索 → 有効化(Enable)


🔐 OAuth認証を設定する

① 「認証情報(Credentials)」→「同意画面を構成」

  • ユーザータイプ:外部(External)

  • アプリ名:talend(適当でOK)

  • メールアドレス:自分のGoogleアカウント

  • 「保存して続行」→「次へ」連打 → 「ダッシュボードに戻る」

② アプリを公開する

  • 「アプリを公開」→「確認」


🔑 認証情報(OAuthクライアントID)を作る

① 「認証情報」→「+認証情報を作成」→「OAuthクライアントID」

  • アプリの種類:デスクトップアプリ

  • 名前:talend client 1(自由)

② 発行された情報をメモ

  • クライアントID

  • クライアントシークレット

(後でTalendに貼り付ける)


🛠 Talend側の設定

① TalendのMetadataで接続を作成

  • 左の「Metadata」→「Google Drive」→右クリック →「New Google Drive connection」

設定項目例:

項目
NametalendDrive2(好きな名前)
Application Nametalend client 1
Client IDさっきコピーしたやつ
Client Secretさっきコピーしたやつ

② 「Test connection」で接続確認
  • ブラウザが開く → アカウントを選ぶ

  • 「詳細」→「タレンドを開く」→「許可」

  • 成功すれば、Talendに「接続成功」と表示される


🧩 ジョブを作って実行

コンポーネント構成:

tPreJob
↓ tGoogleDriveConnection(事前に作成した接続を使う) ↓ tGoogleDriveList(指定フォルダ内のファイル一覧を取得) ↓ tLogRow(一覧を表示)

ポイント

  • tGoogleDriveList に指定するのは フォルダ名(例:「talend」)

  • 出力形式は「Table」モードにすると見やすい


🎉 実行すると…

コンソールにGoogle Drive内のファイル名や詳細がズラっと表示されます。


✨ 応用できること(参考)

Talendには他にもいろんなGoogle Drive用コンポーネントがあります:

コンポーネント名機能
tGoogleDrivePutファイルをDriveにアップロード
tGoogleDriveGetDriveからファイルを取得
tGoogleDriveDeleteファイル削除
tGoogleDriveCopyファイルをコピー



Google Cloud Storage(GCS) に接続し操作

Talendを使って、Google Cloud Storage(GCS) に接続し、

  • ファイルをアップロード(GSPut)

  • ファイル一覧を取得(GSList)

という処理を作って実行します。


🔧 事前準備(Google Cloud側)

① Google Cloud Storageのアカウント作成(無料)

  • https://cloud.google.com/storage にアクセス

  • Googleアカウントでサインアップ

  • 初めての方は $300分の無料クレジットがもらえます

  • サインインしたら「Console」に進みます


② バケット(保存場所)を作る

  • GCS上で「バケット」を作成
    例:talend-basics-files


③ サービスアカウントを作成して、鍵(JSON)をダウンロード

  • Google Cloud Consoleで「IAMと管理」→「サービスアカウント」

  • サービスアカウントを作成し、「鍵を追加」→ JSON形式でダウンロード

👉 このJSONファイルがTalendからGCSに接続するための秘密鍵になります。


🛠 Talend側の設定

① Talendのジョブ全体構成(ざっくり図解)

[ tPreJob ]
[ tGCSConnection ] ← サービスアカウントJSONを使ってGCSに接続 ↓ [ tGSPut ] ← ローカルのデータをGCSにアップロード ↓ [ tGSList ] ← 指定フォルダ内のファイルを一覧取得 ↓ [ tLogRow ] ← ファイル名などを表示 ↓ [ tGCSClose ] ← 接続終了

② 接続の設定(tGCSConnection)

  • コンポーネント:tGCSConnection

  • 設定項目:

    • 認証タイプ:Service Account

    • サービスアカウントキー:先ほどダウンロードしたJSONファイルのパス


③ アップロード対象のローカルフォルダ構成

たとえばこんな感じ:

Talend/
└─ data/ ├─ in/ │ ├─ file1.csv │ └─ file2.csv └─ params/ └─ config.json

この中で、in/とparams/の中にあるファイルだけをGCSへアップロードします。


④ フォルダ名の取得(ちょっとだけテクニカル)

  • 「ローカルのパス(例:.../data)」から最後の部分だけ取り出して(例:「data」)
    → これをGCS上のフォルダ名として使うために、スクリプト処理あり。

  • 取得したフォルダ名は、globalMapという仕組みに保存され、あとで参照します。


⑤ GSPut(アップロード用)の設定

  • 「既存の接続を使う」にチェック

  • バケット名:context変数から取得(例:context.bucketName

  • ローカルフォルダ:context.rootDirectory

  • Google Cloudのアップロード先:先ほど取得した targetFolder

👉 ファイル一覧の指定がなければ、フォルダ内すべてアップロードされます。


⑥ GSList(ファイル一覧取得)

  • 対象バケット:context.bucketName

  • キープレフィックス(フォルダパスの指定):例 → "data/in"
    → このフォルダ以下のファイルをすべて列挙


⑦ tLogRowで表示

  • ファイル一覧の出力には tLogRow を使う

  • 表示内容は:

    • CURRENT_BUCKET(バケット名)

    • CURRENT_KEY(ファイル名)


⑧ 最後に接続を切る(tGCSClose)


▶ 実行結果(実行するとこうなる)

  • ローカルの data/in フォルダにあるファイルたちが GCSにアップロード

  • その後、アップロードしたファイルの一覧がコンソールに表示

  • 実際にGCSのバケットをブラウザで開くと、中身が増えている!


🧠 ワンポイント補足

  • 「キープレフィックス」を指定すれば、特定のフォルダだけ絞って表示できます
    → 例:data/in/ → 「inフォルダの中身だけ」

  • 指定しなければ、すべて表示されます(params/の中も含まれる)



🎯 REST APIをTalendで呼び出す

REST API(Webサービス)をTalendで呼び出す方法を学ぶ

使うAPI:
🌍 https://restcountries.com
→ 国の電話番号コードで国情報を取得できる無料APIです。


🛠 何を作るのか(処理の流れ)

✅ 処理概要

  1. TalendでREST API(Webサービス)を呼び出す

  2. 返ってきたJSON形式のデータを整形・抽出する

  3. 通貨情報などを抽出してコンソールに表示する


🔗 使用するREST APIの説明

URL形式:

https://restcountries.com/v3.1/callingcode/{国コード}

例:

https://restcountries.com/v3.1/callingcode/49

→ 「49」はドイツの国番号 → ドイツの国情報がJSON形式で返る


👣 作業ステップ


【1】APIからのJSONデータを取得し、ローカルに保存

  • まずブラウザで上記のURLを叩いてみる
    例:https://restcountries.com/v3.1/callingcode/49

  • 表示されたJSONデータをコピーして、rest.jsonという名前で保存
    → 保存場所:talend/data/in/rest.json


【2】TalendでJSONメタデータを作る(tExtractJsonFieldsで使うため)

  1. Talendの「Metadata」から「File JSON」を右クリック → 新規作成

  2. ファイルパスで rest.json を指定(見つからない場合は * ですべて表示)

  3. JSONの構造が表示されるので「Next」

  4. どの部分で「繰り返し(ループ)」するかを指定

    • ここでは "currencies"(通貨の配列)をループ対象にする

  5. 抽出したい項目を選んで登録

    • 例:国名(name)、通貨名(name)、記号(symbol)など

    • 「curr」などの接頭語をつけるとわかりやすくなる


【3】Talendのジョブを作成する

処理の流れを下記のように構成:

[tREST][tExtractJsonFields][tLogRow]

【4】REST APIの呼び出し(tREST)

  • コンポーネント:tRESTClient(または tREST

  • 設定:

    • URL:https://restcountries.com/v3.1/callingcode/49

    • または https://restcountries.com/v3.1/callingcode/ + context.callingCode(変数)

👉 context.callingCode を使うと国コードを動的に変更できる


【5】JSONの解析(tExtractJsonFields)

  • 入力:REST APIから返ってきた body(JSON文字列)

  • 出力:先ほど作った「Metadata(countryInfo)」をドラッグして使う

  • ポイント:

    • 接続時に「スキーマを引き継ぎますか?」と聞かれたら「No」と答える

    • 入力のカラムは "body"(JSON文字列)

    • 出力のカラムは「通貨名」「国名」など抽出対象のフィールド


【6】結果の表示(tLogRow)

  • tExtractJsonFields → tLogRow に接続

  • 表示形式:Table

  • ラベルを「CURRENCY_DATA」などに変更して分かりやすくする


【7】実行してみよう!

  • 最初は context.callingCode = 49(ドイツ)で実行

  • 結果:ドイツの通貨名、記号などが表示される

例:

countryName | currName | currSymbol
--------------------------------------- Germany | Euro | €
  • 他にも 46(スウェーデン)などに変えると違う国の通貨が取得できる!


💡 補足:context変数の使い方(国コード切替)

  • Talendでは context を使って外部から値を渡せます

  • 例:

    • context.callingCode = 49

    • context.callingCode = 46

  • これにより、同じ処理で別の国のデータも取得できます


🎯 インターネット上のファイルをダウンロードする

Talendでインターネット上のファイルをダウンロードする方法を学ぶ

使うコンポーネントは:

  • tFileFetch(ファイルをURLから取得)

  • tMsgBox(処理結果の表示:成功/失敗)


👣 ステップごとの説明

✅ ステップ1:ジョブの作成

  1. Talendでプロジェクトを開く

  2. フォルダを右クリックして【Create job】を選ぶ

  3. ジョブ名を fileDownload にして作成(例:fileDownload2


✅ ステップ2:必要なコンポーネントを配置

使うのはこの2つ:

  • tFileFetch(ファイルをURLからダウンロードする)

  • tMsgBox(成功メッセージやエラーメッセージを表示する)


✅ ステップ3:tFileFetchの設定

🧩 tFileFetch に対して以下の設定をします:

項目内容
URLダウンロード元のファイルURLを入力(例:https://example.com/file.csv)
保存先ディレクトリTalendのローカルフォルダ(例:Talend/data/out
保存ファイル名ダウンロードするファイル名(例:file.csv)

✅ つまり、「このURLからファイルを取りに行き、それを自分のPCのdata/outフォルダに保存してね」という指定です。

✅ ステップ4:メッセージ表示の設定

正常に完了した場合(成功)

  • tFileFetchtMsgBox を「On Subjob Ok」でつなぐ

  • メッセージの中身を "ok" に設定

エラーが起きた場合(失敗)

  • もう1つ tMsgBox をコピーして作成

  • tFileFetch → 2つ目の tMsgBox を「On Subjob Error」でつなぐ

  • メッセージは "error" に設定

💡 補足:「On Component Ok / Error」でも接続可能ですが、将来的にジョブが複雑になるなら「Subjob」系を使った方が安心です。


✅ ステップ5:実行と確認

  1. ジョブを実行

  2. 成功した場合、"ok" のメッセージボックスが表示される

  3. 指定した保存先にファイルがダウンロードされていることを確認

→ 一度ファイルを削除してもう一度実行すると、「本当にダウンロードされたか」が確認できます ✅


💡 ポイントまとめ

要素内容
🎯 目的Web上のファイルをTalendでダウンロードする
🔧 使う部品tFileFetch, tMsgBox(成功&失敗用)
💡 メリット自動でWebファイル取得 → ローカル保存できる
🔁 応用例日々のデータ更新ファイルなどをスケジュールで自動取得!


🎯 RSSフィードを読み込む

TalendでRSSフィード(ニュースやブログの更新情報)を読み込む方法を学ぶ

使うコンポーネントは:

  • tRSSInput(RSSフィードを読み込む)


👣 ステップごとの解説

✅ ステップ1:ジョブの作成

  1. Talendを開く

  2. ジョブ名を「rssFeeds」として新しく作る
     (動画ではすでに完成したジョブを使って説明)


✅ ステップ2:tRSSInput を配置する

  • コンポーネント検索で tRSSInput を見つけてジョブ画面にドラッグ


✅ ステップ3:必要なモジュールをインストール(初回だけ)

⚠️ 注意:tRSSInput を使うには、外部モジュール(Javaライブラリ)が必要です。

  • tRSSInput にオレンジ色のバーが出たら、クリックして「Install」ボタンを押す

  • 「Download and install all modules available(すべての利用可能なモジュールをインストール)」を選ぶ

  • インストールが終われば、エラーは消える


✅ ステップ4:RSSのURLを設定

  • Talendの公式ニュースを取得するため、次のような RSSフィードのURL を設定
    例:https://feeds.feedburner.com/TalendBlog
    (これは例なので、別のRSSフィードでももちろんOK)


✅ ステップ5:コンソールに出力する

  • tRSSInputtLogRow と接続

  • tLogRow を「Table(テーブル形式)」に設定しておくと見やすい


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

  • ジョブを実行すると、**RSSフィードの中身(記事のタイトル、説明、リンクなど)**が表示される

  • たとえば以下のような情報が出てくる:

    • タイトル:Talendの最新ニュース

    • 説明:その記事の内容

    • リンク:実際のブログやお知らせへのURL


前の記事:Talendデータベース操作について

次の記事:Talend変数など