Talendに爆速で入門する(環境構築⇒CSV変換ジョブ⇒DB連携まで)

#はじめに
TalendOpenStudioを可能な限り速く習得するためのまとめです。
基本的には、私がこっそり書いているTalendブログ記事の、重要な所だけをサマリしている感じです。

#つか、Talendって...なに？
ETL開発ツールです。
バッチとかの裏方で走らすジョブをGUIで簡単につくれるよ！というのが売りです。
割と真面目に簡単に、すぐにバッチが作れます。
TalendOpenStudioであれば、無償で使用することができます。

もう少し詳しく知りたい方はこちら[【Talend Open Studio】バッチ開発を高速にっ！Talendについて](http://tasokori.net/%E3%80%90talend-open-studio%E3%80%91%E3%83%90%E3%83%83%E3%83%81%E9%96%8B%E7%99%BA%E3%82%92%E9%AB%98%E9%80%9F%E3%81%AB%E3%81%A3%EF%BC%81talend%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/)

#爆速で入門するよ！
それでは、入門しましょう。
対象とするTalendOpenStudioのバージョンは、5.6です。

##環境構築
環境構築は、JDKとTalend本体を下記リンクからダウンロード&インストールすればokです。
ただし、Talend5.x系なら、JDKは7をインストールしてください。

[JDKのダウンロード(Oracleサイト)](http://www.oracle.com/technetwork/jp/java/javase/downloads/jdk7-downloads-1880260.html)

[TalendOpenStudioのダウンロード(Talendサイト)](http://www.talend.com/download/talend-open-studio?qt-product_tos_download=3)

両者をダウンロード&インストールして、起動した時に、エラーが表示される場合は、下記ページを参考にしてください。
[【Talend Open Studio 入門01】開発環境の構築。Talendをインストールしよう](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8001%E3%80%91%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B/)

無事Talendが起動したら、入門で作るジョブを収めるためのプロジェクトを新規作成します。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/talend_newproj3.png)
上記画像の、作成ボタン⇒プロジェクト名,プロジェクトの説明などを入れて簡単に作成できます。

##サンプルジョブを作る1 CSVデータ変換
環境構築がすんだら、早速ジョブを作っていきます。
(ここではサマリで書いていきます。詳しくは[こちら](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8002%E3%80%91csv%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%80%82%E3%81%BE%E3%81%9A%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4/))
始めは、簡単そうなCSVデータ変換ジョブを作ってみることにします。

まずはジョブの作り方から
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image5.png)
Talendを起動するとこんな感じの画面が表示されます。
ジョブは、一番左の「リポジトリ」の「ジョブ」を右クリックすると作れます。
一旦、右クリックでフォルダを作ってから、そこにジョブを作る方が後々見やすくてよいかと。

ジョブを作ったなら、下記のような真っ白な画面が表示されていると思います。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image9.png)
この真っ白な所に、部品を配置⇒接続 していくことで、ジョブが完成します。

###部品配置
CSV変換ジョブを作りたいので、CSV読み込み部品を配置します。
一番右側にある「パレット」の検索ウインドウに、"tFileInputDelimited"と入力してEnterを押下します。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image10-e1471616054387.png)
お目当ての部品が見つかったら、ドラッグアンドドロップで画面に落とします。
これがファイル入力部品です。

同様の手順で、今度は"tMap"と入力してその部品を画面に落とします。
これが項目編集部品です。

さらに、"tLogRow"と入力して部品を配置します。
これがログ出力部品です。

###部品接続
次に、配置した3部品を接続していきます。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image14-e1471616797759.png)
部品を右クリック⇒Row⇒メイン を選択して、tFileInputDelimitedとtMapを接続します。

###tFileInputDelimited部品設定
次に、tFileInputDelimitedで扱うデータのカラム(列)を定義します。
tFileInputDelimitedを選択⇒下側の「コンポーネント」タブを選択⇒「スキーマの編集」のボタン押下と進みます。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image18.png)
この様に定義します。
後は、読み込むCSVのパス設定、区切り設定も行っておきます。
これでcsv読み込み部品の設定はokです。

###tMap設定
項目編集のためのtMap部品を編集します。tMapのアイコンをダブルクリックでエディタが開きます。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image16.png)
一番右上の「＋」ボタンを押して、出力テーブルを作ります。とりあえず名称は"out1"のままでokです。

作った出力側テーブルの項目(カラム)を編集します。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image19.png)

出力側のカラム定義が終わったら、それぞれの項目にどの値をセットするかのマッピング定義を行います。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image21.png)
「式」に直接値を書いてもokですし、入力側の項目をドラッグ&ドロップでも設定できます。

ここまで設定できればtMapの設定は終わりです。

###一旦動作確認
tMapのout1を、tLogRowに繋げて動作を一旦確認します。
ジョブ実行は、下側の「実行」タブ⇒「基本実行」⇒「実行」ボタン押下でokです。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image29-e1471620875380.png)
正常終了したらコンソールにログが吐かれます。

###ファイル出力部品配置&設定
正しく値が出力されていたら、今度はファイル出力部品を配置します。
名称は、"tFileOutputDelimited"です。

![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image30-e1471621562831.png)
tLogRowからrowを繋げて、「コンポーネント」タブ⇒「ファイル名」の設定、CSV設定を行っておきます。

###ジョブ完成！実行して確認
以上で、CSV入力⇒編集CSV出力というジョブができました。
慣れると3分でこうしたジョブが作れます。

実行するとこんな感じになります。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image31-e1471621697188.png)

出力パスで指定したパスにcsvが吐かれているはずです。
お疲れ様でした。


##tMapをもっと詳しく知りたい
tMapは、Talendにおいてかなり重要なコンポーネントです。
下記ページも見ておくと参考になるかもしれません。
[tMapでマスタデータを紐づける方法](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8003%E3%80%91tmap%E3%81%A7%E3%83%88%E3%83%A9%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92/)
[tMapのフィルタリング機能とVarの使い方](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8004%E3%80%91tmap%E3%81%AE%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E6%A9%9F%E8%83%BD%E3%81%A8var%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/)


##サンプルジョブを作る2 データベースと連携する
今度は、データベースからデータを取得して編集、別のテーブルにinsertする、というジョブを作ってみます。
使用するDBは、SQLServerです。が、部品のプレフィックス部が変わるだけで、他のDBでもほぼ同じです。

(ここではサマリで書いていきます。詳しくは[こちら](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8005%E3%80%91%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9sqlserver%E3%82%92%E6%89%B1%E3%81%86%E3%80%82tmssqlrow%E3%81%AE%E4%BD%BF%E3%81%84/))


###DB接続部品

まずは、DB接続用のコンポーネントを配置します。
SQLServerの場合ですと、"tMSSQLConnection"とパレットで検索します。(他のDB、例えばMySQLであれば、tMySQLConnectionのように、tXXXConnectionと、XXXの部分が各DB製品ごと異なります)

![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image56.png)
配置したら、接続先情報を「コンポーネント」タブで設定します。
ここは各環境によって異なりますので、適切なパラメータを渡します。

###テーブルのレコード取得部品

次に、接続したDBのとあるテーブルから値を取得する部品を配置します。
SQLServerなら、"tMSSQLInput"です。

![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image58.png)
この部品も、「コンポーネント」タブで設定を行います。
「スキーマの編集」で、テーブルから取得し、rowとして次のコンポーネントに流したいカラムを定義します。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image59.png)
「クエリ」で、取得したいデータを取得するためのSelect文(SQL)を発行します。
「クエリ」に与えるパラメータは、文字列ですので、リテラルで書くならダブルクォートでちゃんと囲ってあげます。
(↑囲い漏れでエラーを出してしまうあるある)

###一旦レコード取得を確認
ここまで設定が間違いないことを、tLogRowで確認してみます。
「実行」タブの実行でジョブを動かします。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image61.png)
問題が無ければ、取得したレコードがログに表示されるはず。

###tMapでトランデータと突合(今回のサンプルの要件なので)

今回参考にしている[こちら](http://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8005%E3%80%91%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9sqlserver%E3%82%92%E6%89%B1%E3%81%86%E3%80%82tmssqlrow%E3%81%AE%E4%BD%BF%E3%81%84/)の要件ですと、マスタデータをDBのテーブルから、トランザクションをcsvから取得となっているので、こちらもその通り進めます。
(スクショの関係で)

というわけで、tMapとtFileInputDelimitedを配置して、取得したテーブルの値と突合します。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image62.png)

tMapでマッピング設定をいれます。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/10/talend_db_tmapconf.png)

###レコード挿入部品

編集したデータをテーブルにinsertします。
テーブルinsert用の部品は、"tMSSQLOutput"です。
![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image65.png)
「テーブル」にinsert先テーブル名を。
「テーブル操作」では、テーブルが無かったら作る～などの設定を入れられますが、通常は何もしないでokのはず。
「データ操作」は、今回は挿入のみですので挿入を。

###最後にコミットを忘れずに

コミットをしないと、折角オペした内容が反映されないので、忘れずに入れておきます。
"tMSSQLCommit"です。

![alt](http://tasokori.net/wp/wp-content/uploads/2016/08/image67.png)
これでDBからデータ取得⇒編集⇒データ挿入 ができるTalendジョブの完成です。
お疲れ様でした。


#[2016/10/24] Talendの実装に関するTipsをまとめてみました
[Talendのこんな時どうすればいいの？をまとめてみました](http://qiita.com/hidepy/items/521a59da49d667748db0)