clock2015.07.25 10:04
SERVICE
home

フィルタリングと文字列置換とプログラムによる変換方法|Talend Open Studio によるビッグデータ分析(第5回)

AUTHOR :   ギックス

フィルタリング(tFilterRow)と文字列置換(tReplace)とプログラムによる変換(tMap)を紹介

前回、Talendでフォルダ検索を行い、フォルダ中のファイルを1つのファイルに追記する方法までのジョブを作成しました。また、コンテキストやサブジョブについても触れました。今回は、読み取ったデータの変換方法です。変換方法には、様々なコンポーネントがありますが、今回はその中で利用頻度が高い3つのコンポーネントについてご紹介します。

作成するジョブの紹介

今回、作成するジョブは、前回の作成した機能以外のフィルタリングと変換処理(下記の3と4と5)です。また、コンポーネント同士を紐づける方法については、前回までの応用で行えますので、説明からは省かせていただきます。

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

フィルタリング(tFilterRow)

tFilterRowコンポーネントは、指定したカラムの条件に一致する行だけを抽出するコンポーネントです。使い方はシンプルで、フィルタリング条件のカラム名を「入力カラム」に、比較条件を「オペレータ」に、比較値を「値」に入力します。

「ファンクション」は、「入力カラム」で指定したカラム値の変換方法になります。通常の「空」の場合は無変換のカラム値で比較し、「長さ」の場合はカラム値の文字数で比較を行います。その他に「小文字」「大文字」などのファンクションが選択できます。下記のイメージの場合、「store_code」の値の桁数が0桁より多い行を取得している事になります。talend_job29

文字列置換(tReplace)

tReplaceコンポーネントは、指定したカラムの文字列置換するコンポーネントです。こちらも使い方はシンプルで、フィルタリング条件のカラム名を「入力カラム」に、検索対象文字列を「検索」に、置換文字列をを「置換」に入力し、通常の文字列置換の場合は「単語全体」のチェックは外してください。また、検索対象文字列を正規表現で指定可能ですので、「前方の○○文字を置換」といった高度な文字列置換も可能です。talend_job30

プログラムによる変換(tMap)

tMapコンポーネントは、複数の種類の入力ファイルを1つにまとめる(結合)するコンポーネントです。また、コンポーネント設定でJavaプログラムを記載できる場所があり、今回は、それを使用しプログラムによる変換処理を記述します。

tMapコンポーネントの設定画面は専用の設定画面を持っています。設定画面を開くためには、配置したtMapアイコンをダブルクリックしてください。

設定画面を開きましたら、最初に右上の「+」ボタンをクリックして空のスキーマを作成し、作成された空のスキーマに左側の取得元カラムをドラック&ドロップで出力カラムを追加します。次に変換処理を行うプログラムを記述するために、中央の「+」ボタンをクリックして変数を追加し、変数名とタイプ(出力データ型)を設定します。そして、「式」の入力エリアにある「…」ボタンをクリックして「式ビルダ」画面を表示します。
talend_job31

式ビルダ画面では、「式」エリアにJavaプログラムを記載できます。記載するプログラムは下記内容に記述してください。

  • 記載するプログラムは必ず処理結果を返す
  • 記載するプログラムは1行(ステップ)の命令
  • 記載するプログラムは標準の関数以外に作成した関数を使用可能(関数はリポジトリの「コード」から作成)
  • 取得元のカラム値を取得したい場合、「変数」リストから選択できるtalend_job32

Talendはプログラムを記述することで自由度が高くなる

今まで本稿を含め3回の連載でTalendの簡単なジョブの作成をご紹介しました。様々なETL処理はあると思いますが、これらのテクニックの応用で大半の変換処理は行えると思います。特にtMapコンポーネントは、Javaプログラムを記載することで、他のETLツールより自由度の高い変換処理が行えると思います。更に、tJavaコンポーネント(複数ステップ(行)のプログラムを記載)やtLibraryLoadコンポーネント(jarなどの外部ライブラリ参照)などを使うことで、より高度な処理が行えると思います。

次回からは、ETL処理の「Extract(取得)」処理と「Load(登録)」処理して、DBへの接続、Amazonクラウドサービス(AWS)への連携方法について記載しようと思います。

【連載、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