clock2015.07.18 10:20
SERVICE
home

フォルダ中のファイルを変換して1つにまとめる|Talend Open Studio によるビッグデータ分析(第4回)

AUTHOR :   ギックス

フォルダ検索(tFileList)の結果からファイル読込(tFileInputDelimited)の連携の方法を紹介

前回、Talendで簡単なジョブを作成しましたが、そのジョブに手を加え、変換処理を行うまでの手順を2回に分けて連載したいと思います。また、今回は、ジョブを作るときに重要な「サブジョブ」と「コンポーネント」について、ご紹介したいと思います。

作成するジョブの紹介

これから作成するジョブは、前回の作成したジョブを流用して、下記の機能を持ったジョブを作成します。(本編では、1と2と6について解説します)

  1. フォルダ内を検索
  2. フォルダの検索結果からファイルを読み込む
  3. 読込結果の行フィルタリング
  4. 読込結果のプログラミングによる変換処理
  5. 読込結果の文字置換
  6. 変換結果の書込み(追記)talend_job20

コンテキストについて

ジョブの作成に入る前にTalendのコンテキスト(contexts)機能について説明したいと思います。コンテキストとはキー(Name)と値(Value)を持ったプログラムで言うところの「変数」です。

コンテキストを使わずにジョブの作成は行えますが、ファイ名やデータベースのテーブル名など、何度も同じ値を使用する情報をコンテキストに設定することで作業効率がアップします。また、定期的に実行するジョブの場合、その度に入力ファイル名を書き換えるのは手間です。この様に実行環境や実行タイミングなどで変わる可変情報をコンテキストに外出しすると、入力ファイル名などの変更が楽になります。talend_job28

フォルダ検索(tFileList)

tFileListコンポーネントは、指定されたフォルダ検索を行い、1件ずつファイル名を返すコンポーネントです。前回と同様の方法でコンポーネントを配置します。tFileListコンポーネントの設定箇所は、ディレクトリだけです。今回は、検索するフォルダを事前にコンテキストに設定していますので、「context.コンテキスト名」でコンテキストの変数の値を設定しています。talend_job21

ファイルの読込(tFileInputDelimited)

前回の設定したtFileInputDelimitedコンポーネントの設定に手を加え、tFileListコンポーネントの結果を受け取れるようにします。

始めにtFileListアイコンを右クリックし、「Row」の「反復」をクリックします。クリックするとラインがtFileListアイコンから伸びますので、tFileInputDelimitedアイコンをクリックして、2つのアイコンを紐づけます。talend_job22

次にtFileListコンポーネントの出力結果であるファイル名を、tFileInputDelimitedコンポーネントで取得する方法について説明します。tFileInputDelimitedコンポーネント側のファイル名にtFileListコンポーネントの出力結果の変数を設定しますが、「((String)globalMap.get(“tFileList_1_CURRENT_FILEPATH”))」のようなプログラム命令を入力する必要があります。そのため、Talendの入力補完機能を使用して、入力の手間を省きます。

入力補完機能は、テキストエリアにカーソルを入れて「Ctrlキー + スペースキー」で行えます。今回の場合は、下記のように「CURRENT_FILEPATH」を選択します。選択後、プログラム命令に変換され、tFileListコンポーネントからファイル名を取得することができるようになります。talend_job23

ファイルの書込(tFileOutputDelimited)

前回、配置したtFileOutputDelimitedコンポーネントの状態の場合、読み込むファイルが変わったタイミングで出力ファイルが置き換えられます。そこで、配置したtFileOutputDelimitedアイコンを選択し、「追加」にチェックを入れます。これによって、出力ファイルの最終行に行が追加されるようになります。talend_job25

サブジョブは処理のカタマリ

前回と今回で複数のコンポーネントを組み合わせて、薄い青色の枠が出ていると思います。この薄い青色の枠の単位をTalendでは「サブジョブ」と定義しています。サブジョブは、Talendで自動的に設定されるため、任意での設定はできません。

このサブジョブは、処理のカタマリとして機能します。下記の場合は、「サブジョブA」が終了後に「サブジョブB」のフォルダ検索を行い、「サブジョブB」の一連のファイル出力のまでの処理の終了後に「サブジョブC」が実行されるといった処理順番でジョブが実行されます。talend_job24

サブジョブ同士は、該当のコンポーネントを右クリックし「トリガ」の「サブジョブがOKの場合」で紐づけることができます。

次回はフィルタリングと変換処理

今回は、フォルダ検索(tFileList)コンポーネント、Talendの主要機能であるコンポーネントとサブジョブについて説明しました。2回に渡ってTalendの使い方について解説してきましたが、ETL処理のメイン処理であるフィルタリングや変換処理に触れませんでした。次回は、いよいよ、フィルタリングや変換処理を行うコンポーネントについて解説したいと思います。

【連載、Talend Open Studio によるビッグデータ分析】
  1. ”Talend”と”RapidMiner Studio”、2つのETLツールを比較してみた
  2. Talendのインストールと初期設定(Windows 8.1編) ~Javaのバージョンに気を付けろ~
  3. Talendで簡単なジョブの作成
  4. フォルダ中のファイルを変換して1つにまとめる (本稿)
  5. フィルタリングと文字列置換とプログラムによる変換方法
  6. DB間のデータコピーを2つのコンポーネントだけで行う
  7. Amazon Redshiftへのデータインポートを2つのコンポーネントだけで行う
  8. Talendがバッチ処理の開発方法を変える ~スマートな開発を行おう~
  9. Talendの無償版(TOS)と有償版(Enterprise)の違
  10. TOSを使ってMicrosoft Azure SQL Data Warehouseを操作する
  11. TOSでギガ単位の適切なテストデータを作成する
  12. Web API からの取得結果をデータベースに登録する処理をノンプログラミングで実現する
SERVICE