🎯 JSONファイルからデータを読み取る:
Talendを使ってJSONファイル(store.json)からデータを読み取る方法を学びます。
🧩 使う主なコンポーネント
コンポーネント名 | 説明 |
---|---|
tFileInputJSON | JSONファイルを読み込む |
tLogRow | 読み込んだデータを画面に表示する |
Repository → Metadata | JSON構造を事前に定義して再利用できるようにする |
📁 読み込むファイル「store.json」の構造(例)
🪜 ステップバイステップ解説
✅ ステップ①:JSONファイルを1項目ずつ読む(ループなし)
-
ジョブを新規作成(例:
jsonFiles2
) -
tFileInputJSON
を配置し、store.json
ファイルを指定 -
「JsonPath without loop(ループなし)」モードを選択
→ 単純な1つの値(例:店舗名)を取り出すときに使う -
スキーマを編集して1つのカラムを追加:
-
名前:
storeName
-
データ型:
String
-
JsonPath:
$.store.name
(ドル記号$
はルートを意味)
-
-
tLogRow
とつなぎ、「Tableモード」で表示 -
実行結果(例):
✅ ステップ②:複数のフィールドを読む(ループなし)
-
さらにスキーマに3つのカラムを追加:
すべて文字列(String)でOKカラム名 JsonPath bicycleType $.store.goods.bicycle.type
bicycleColor $.store.goods.bicycle.color
bicyclePrice $.store.goods.bicycle.price
-
tLogRow
と再び接続して実行
※スペルミス注意!例:bicycle
に「c」が抜けるとnull
になります。 -
実行結果(例):
✅ ステップ③:JSONの配列(ループ)を読む
ここが少し高度になりますが、Talendの「Metadata」機能を使えば簡単です。
🔄 「books」配列を読み取る
-
Repository > Metadata > File JSON に移動し、「Create JSON」を選択
名前:booksJson
-
「Input JSON(入力用)」を選び、
store.json
を選択 -
プレビュー画面が出る(うまく表示されない場合は拡張子に注意)
-
Path Loop Expression に次を指定:
→
[*]
は配列をループして読む意味 -
抜き出したい項目を選択(例:
title
,price
) -
必要なら
store.name
も含めることが可能(共通の値) -
スキーマを確認し、
Finish
✅ ステップ④:定義した JSON をジョブに使う
-
Repository にできた
booksJson
をジョブにドラッグ&ドロップ -
tFileInputJSON
に変換される(自動) -
tLogRow
とつなぎ、「Sync columns」をクリックしてカラムを反映 -
tLogRow
を「Tableモード」にして実行 -
実行結果(例):
🔁 ループあり・なしの違いまとめ
読み方 | 使うモード | 用途 |
---|---|---|
ループなし | 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、名、姓)
こんな構造です:
✅ Talendでの手順まとめ:
① 新しいジョブを作る
-
ジョブ名は「xmlFiles」などにして作成。
② XMLのスキーマを定義する(これが超大事)
-
リポジトリ → Metadata → File XML → 右クリック → 「Create file xml」
-
任意の名前を付けて「Next」
-
ファイルの種類は「Input XML(読み取り)」を選ぶ
-
対象ファイルを選ぶ:「film_actor.xml」
-
ループの設定
→ 1人ずつ俳優を読み込むようにするので、/film/actors/actor
を「XPath Loop」にドラッグ -
取り出す項目を設定(ドラッグでOK)
-
俳優情報(actor_id、first_name、last_name)
-
映画情報(film_id、title、description)
-
-
「Refresh Preview(プレビュー)」で読み取れているか確認
-
問題なければ「Finish」
③ コンポーネントとして使う
-
今作った「film_actor.xml」の定義をジョブ画面にドラッグ
→ 自動的にtFileInputXML
コンポーネントになる -
それを
tLogRow
につないで、データをコンソールに表示(出力モードは「Table」)
④ データの並べ替えや加工(オプション)
A. カラム順の入れ替え(tFilterColumns)
-
description
を削除し、film_id
とtitle
を先頭に持ってくる
B. 並び替え(tSortRow)
-
actor_id
で並べ替え
→ 同じ俳優が複数の映画に出ているか確認しやすくなる -
必要に応じて
film_id
も追加
💡 補足:なぜMetadataから定義するの?
-
XMLは構造が複雑なので、自分で手入力するより、Wizard(ウィザード)を使って定義した方が簡単で確実
-
一度作った定義は再利用・更新も簡単(Repositoryからドラッグするだけ)
✅ Google Driveに接続しファイル一覧を取得
TalendからGoogle Driveに接続して、
Drive内のフォルダにあるファイル一覧を取得する方法を学びます。
🔧 全体の流れ(ざっくり言うと)
-
Google Drive APIの利用申請(Google Cloud Console)
-
Talendで接続設定(OAuthで認証)
-
Talendのジョブでフォルダ内のファイル一覧を取得(tGoogleDriveList)
🏁 事前準備(Google側)
① Google Driveにフォルダを作る
-
https://drive.google.com にアクセス
-
例:「talend」という名前のフォルダを作成し、何かファイルを入れておく
② Google Cloud Console にアクセス
-
Googleアカウントでログイン
③ プロジェクトを作る
-
「プロジェクトを選択」→「新しいプロジェクト」
-
名前は何でも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」
設定項目例:
項目 | 値 |
---|---|
Name | talendDrive2(好きな名前) |
Application Name | talend client 1 |
Client ID | さっきコピーしたやつ |
Client Secret | さっきコピーしたやつ |
-
ブラウザが開く → アカウントを選ぶ
-
「詳細」→「タレンドを開く」→「許可」
-
成功すれば、Talendに「接続成功」と表示される
🧩 ジョブを作って実行
コンポーネント構成:
ポイント
-
tGoogleDriveList
に指定するのは フォルダ名(例:「talend」) -
出力形式は「Table」モードにすると見やすい
🎉 実行すると…
コンソールにGoogle Drive内のファイル名や詳細がズラっと表示されます。
✨ 応用できること(参考)
Talendには他にもいろんなGoogle Drive用コンポーネントがあります:
コンポーネント名 | 機能 |
---|---|
tGoogleDrivePut | ファイルをDriveにアップロード |
tGoogleDriveGet | Driveからファイルを取得 |
tGoogleDriveDelete | ファイル削除 |
tGoogleDriveCopy | ファイルをコピー |
✅ Google Cloud Storage(GCS) に接続し操作
Talendを使って、Google Cloud Storage(GCS) に接続し、
-
ファイルをアップロード(GSPut)
-
ファイル一覧を取得(GSList)
という処理を作って実行します。
🔧 事前準備(Google Cloud側)
① Google Cloud Storageのアカウント作成(無料)
-
Googleアカウントでサインアップ
-
初めての方は $300分の無料クレジットがもらえます
-
サインインしたら「Console」に進みます
② バケット(保存場所)を作る
-
GCS上で「バケット」を作成
例:talend-basics-files
③ サービスアカウントを作成して、鍵(JSON)をダウンロード
-
Google Cloud Consoleで「IAMと管理」→「サービスアカウント」
-
サービスアカウントを作成し、「鍵を追加」→ JSON形式でダウンロード
👉 このJSONファイルがTalendからGCSに接続するための秘密鍵になります。
🛠 Talend側の設定
① Talendのジョブ全体構成(ざっくり図解)
② 接続の設定(tGCSConnection)
-
コンポーネント:
tGCSConnection
-
設定項目:
-
認証タイプ:
Service Account
-
サービスアカウントキー:先ほどダウンロードした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です。
🛠 何を作るのか(処理の流れ)
✅ 処理概要
-
TalendでREST API(Webサービス)を呼び出す
-
返ってきたJSON形式のデータを整形・抽出する
-
通貨情報などを抽出してコンソールに表示する
🔗 使用するREST APIの説明
URL形式:
例:
→ 「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で使うため)
-
Talendの「Metadata」から「File JSON」を右クリック → 新規作成
-
ファイルパスで
rest.json
を指定(見つからない場合は * ですべて表示) -
JSONの構造が表示されるので「Next」
-
どの部分で「繰り返し(ループ)」するかを指定
-
ここでは
"currencies"
(通貨の配列)をループ対象にする
-
-
抽出したい項目を選んで登録
-
例:国名(name)、通貨名(name)、記号(symbol)など
-
「curr」などの接頭語をつけるとわかりやすくなる
-
【3】Talendのジョブを作成する
処理の流れを下記のように構成:
【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
(ドイツ)で実行 -
結果:ドイツの通貨名、記号などが表示される
例:
-
他にも
46
(スウェーデン)などに変えると違う国の通貨が取得できる!
💡 補足:context変数の使い方(国コード切替)
-
Talendでは
context
を使って外部から値を渡せます -
例:
-
context.callingCode = 49
-
context.callingCode = 46
-
-
これにより、同じ処理で別の国のデータも取得できます
🎯 インターネット上のファイルをダウンロードする
Talendでインターネット上のファイルをダウンロードする方法を学ぶ
使うコンポーネントは:
-
tFileFetch
(ファイルをURLから取得) -
tMsgBox
(処理結果の表示:成功/失敗)
👣 ステップごとの説明
✅ ステップ1:ジョブの作成
-
Talendでプロジェクトを開く
-
フォルダを右クリックして【Create job】を選ぶ
-
ジョブ名を
fileDownload
にして作成(例:fileDownload2
)
✅ ステップ2:必要なコンポーネントを配置
使うのはこの2つ:
-
tFileFetch
(ファイルをURLからダウンロードする) -
tMsgBox
(成功メッセージやエラーメッセージを表示する)
✅ ステップ3:tFileFetchの設定
🧩 tFileFetch
に対して以下の設定をします:
項目 | 内容 |
---|---|
URL | ダウンロード元のファイルURLを入力(例:https://example.com/file.csv) |
保存先ディレクトリ | Talendのローカルフォルダ(例:Talend/data/out ) |
保存ファイル名 | ダウンロードするファイル名(例:file.csv) |
data/out
フォルダに保存してね」という指定です。✅ ステップ4:メッセージ表示の設定
正常に完了した場合(成功)
-
tFileFetch
→tMsgBox
を「On Subjob Ok」でつなぐ -
メッセージの中身を
"ok"
に設定
エラーが起きた場合(失敗)
-
もう1つ
tMsgBox
をコピーして作成 -
tFileFetch
→ 2つ目のtMsgBox
を「On Subjob Error」でつなぐ -
メッセージは
"error"
に設定
💡 補足:「On Component Ok / Error」でも接続可能ですが、将来的にジョブが複雑になるなら「Subjob」系を使った方が安心です。
✅ ステップ5:実行と確認
-
ジョブを実行
-
成功した場合、
"ok"
のメッセージボックスが表示される -
指定した保存先にファイルがダウンロードされていることを確認
→ 一度ファイルを削除してもう一度実行すると、「本当にダウンロードされたか」が確認できます ✅
💡 ポイントまとめ
要素 | 内容 |
---|---|
🎯 目的 | Web上のファイルをTalendでダウンロードする |
🔧 使う部品 | tFileFetch , tMsgBox (成功&失敗用) |
💡 メリット | 自動でWebファイル取得 → ローカル保存できる |
🔁 応用例 | 日々のデータ更新ファイルなどをスケジュールで自動取得! |
🎯 RSSフィードを読み込む
TalendでRSSフィード(ニュースやブログの更新情報)を読み込む方法を学ぶ
使うコンポーネントは:
-
tRSSInput
(RSSフィードを読み込む)
👣 ステップごとの解説
✅ ステップ1:ジョブの作成
-
Talendを開く
-
ジョブ名を「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:コンソールに出力する
-
tRSSInput
をtLogRow
と接続 -
tLogRow
を「Table(テーブル形式)」に設定しておくと見やすい
✅ ステップ6:ジョブを実行
-
ジョブを実行すると、**RSSフィードの中身(記事のタイトル、説明、リンクなど)**が表示される
-
たとえば以下のような情報が出てくる:
-
タイトル:Talendの最新ニュース
-
説明:その記事の内容
-
リンク:実際のブログやお知らせへのURL
-