Talend Data Preparationを使ってみる その５

#Talend Data PreparationとTalend Studioの連携（ライブモード）#
前回はDataPreparationのDATASETSに用意されたデータを読み、PREPARATIONSで定義されたクレンジングを行ってファイルに出力するというバッチモードを紹介しました。
今回はTalend Studioで作成したジョブをTalend Administration Centerに登録し、DataPreparation上でジョブを使ってDATASETSに出力するライブモードを紹介します。

#入力データ#
今回は入力用に15000件のCSVファイルを用意しました。
![01_使用データ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/de469059-fd8c-8031-fb25-fcc7fa2e7082.jpeg)

#ジョブの作成#
まずStudioでプロジェクトを作成してログインします。
DataPreparationLiveというプロジェクトを作成しました。
![02_1_新規プロジェクト作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/437ae0d7-5b5c-5cab-d8c5-2f303e5b730a.jpeg)

プロジェクトが開かれたら新規ジョブを作成します。
LiveDummyDataというジョブを作成しました。
![02_2_新規ジョブ作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/992676fd-c28b-1299-1b1e-35a8980a3158.jpeg)

入力用にCSVファイルを用意しましたので、ジョブにtFileInputDelimitedを配置し、ファイル名、セパレーター、ヘッダー設定を行います。
![03_ジョブ_tFileInputDelimited_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/dd067605-959d-59ba-eb3a-186c6184e42f.jpeg)

スキーマをCSVファイルと同じ設定にします。
![03_ジョブ_tFileInputDelimited_1_Schema.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/8f9f1f6e-ec92-1790-be2a-8d91f67fb58d.jpeg)

エンコードをUTF-8に設定します。
![04_ジョブ_tFileInputDelimited_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/8389204e-ebff-a095-85a6-49ac7be7c032.jpeg)
tFileInputDelimitedの設定はこれで完了です。

tDatasetOutputコンポーネントを追加します。
![05_ジョブ_tDatasetOutput_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/a45087fd-7bb6-f570-b917-052aab8328aa.jpeg)

tDatasetOutputコンポーネントのModeをLiveDatasetに変更します。
![06_ジョブ_tDatasetOutput_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/ccc3cd89-0fe4-95f1-3dfc-f98a13faf997.jpeg)

tDatasetOutputコンポーネントのUrlとLimitに設定されている取得先のContext名を、Contextsタブに追加します。
![07_ジョブ_コンテキスト_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/d44bd5ed-a895-2aee-e664-2a7118c4ca6b.jpeg)
tDatasetOutputコンポーネントの設定はこれで完了です。

tFileInputDelimitedとtDatasetOutputを接続します。
![07_ジョブ_保存状態.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/3eb60472-ff08-ff28-6615-fe529c774568.jpeg)
ジョブの設定はこれで完了です。

リポジトリのジョブ名を右クリックしてメニューを開き、Build Jobをクリックします。
![08_ジョブ_Build Job_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/f20718ad-a156-7960-8902-70538fc6758e.jpeg)

Build JobのウィンドウでZipファイルの出力先を設定します。
他の項目はデフォルト値のままでFinishボタンをクリックします。
![09_ジョブ_Build Job_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/8e58dd98-2832-6beb-4ff2-c7727a5f9ffa.jpeg)

指定したフォルダにBuildしたZipファイルが作成されていることを確認します。
![10_ジョブ_Buildup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/e894def5-2f49-d860-3143-716de9ae93ba.jpeg)
ジョブの作成はこれで完了です。

#TAC(Talend Administration Center)でのタスク登録#
作成したジョブをTACでタスク登録します。

ジョブ作成時にStudioで作成したプロジェクトをTACで登録します。
MenuからProjectをクリックし、続けてAddをクリックします。
![11_Tac_Project作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/b15373e6-d6e7-bf8d-302d-84647cc100d8.jpeg)

右のProject設定で、LabelにDataPreparationLiveを入力し、Project typeをData Integration/ESBに設定し、StorageをNoneに設定し、下のSaveボタンをクリックします。
![13_Tac_Project作成_入力欄_設定後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/0b7c6b53-b018-4379-cebd-3e94a85ac162.jpeg)

Projectsの一覧に登録したプロジェクトが表示されました。
![14_Tac_Project作成_作成後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/ee82ad41-9d4e-bb93-524e-e640fb125357.jpeg)

プロジェクトに対してユーザー別の権限を設定します。
MenuのProject Authorizationsをクリックし、先ほど作成したDataPreparationLiveをクリックし、右にのユーザーを選択して一番右にあるRead writeのアイコンをクリックします。
![15_Tac_Project authorizations_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/071052d4-9971-96ea-bb04-6304b80d794d.jpeg)

DataPreparationLiveの右に1が表示され、指定したユーザーに対してこのプロジェクトへの読み書きの権限が与えられました。
![16_Tac_Project authorizations_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/9384b0fd-af84-2c30-7b13-69d88bbe03b0.jpeg)
プロジェクトの設定はこれで完了です。

ジョブサーバーの設定を確認してジョブサーバー名を変更します。
MenuのServersをクリックし一覧からserv1をクリックして、LabelをLocalServerに変更してSaveボタンをクリックします。
![18_Tac_Servers_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/8d663fbd-266e-71b3-b507-69d610bb04c1.jpeg)
![19_Tac_Servers_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/5551159a-021d-48f3-feb4-6bdf1836b703.jpeg)

プロジェクトに対してのサーバーの権限設定を行います。
MenuのServer Project authorizationsをクリックして、一覧からDataPreparationLiveプロジェクトをクリックしLocalServerに対して許可されていることを確認します。
![17_Tac_Server Project authorizations_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/e2991649-775a-ff6a-0068-300c4312d000.jpeg)
ジョブサーバーの設定はこれで完了です。

作成したジョブをタスク登録します。
MenuからJob Conductorをクリックして、AddをクリックしNormal Taskをクックします。
![20_Tac_Job Conductor_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/fb9cf8b7-6780-3ef6-ec0d-8c2419645b8e.jpeg)

画面右にタスク登録欄が入力可能になりますので、Labelに"dataprep_DummyData"を入力し、Execution server:をLocalServerに設定し、Job:の真ん中のアイコンをクリックしてジョブのインポートを行います。
ここで注意すべき点があり、DataPreparationと連携するためにLabelの先頭には必ず"dataprep_"を付加します。
この"dataprep_"という値はDataPreparationの設定ファイルから変更が可能です。
![21_Tac_Job Conductor_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/a655f489-1854-f29f-f270-c6c8cd1c2bd7.jpeg)

Import generated codeのウィンドウが表示されますので、Browse...ボタンをクリックします。
![22_Tac_Job Conductor_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/dfcd4afd-f5d8-3039-675a-aef0cea67ed0.jpeg)

Studioから作成したLiveDummyDataジョブのZipファイルを選択しOpenボタンをクリックします。
![23_Tac_Job Conductor_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/5c37fad8-f968-2ec9-af4d-cef41e016349.jpeg)

Launch uploadボタンをクリックします。
![24_Tac_Job Conductor_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/69027d2f-3fef-b44d-af24-da81440e29ae.jpeg)

アップロードしたジョブの情報が表示されますので、下のSaveボタンをクリックします。
![25_Tac_Job Conductor_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/9efd7c42-aef0-1ca4-c260-4d8fbc15cb2e.jpeg)

一覧に登録したタスクが表示されますので、タスクをクリックして選択し画面上部にあるDeployボタンをクリックします。
![26_Tac_Job Conductor_7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/2576d518-53e0-24ba-85f8-925c38bef2fc.jpeg)

デプロイが完了したらタスクのStatusがReady to runに変わっていることを確認します。
![27_Tac_Job Conductor_8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/3f03673d-b7b7-e698-250c-e42279ed2ef0.jpeg)
TACでのタスク登録はこれで完了です。

#DataPreparationでタスク実行によるDATASETSの作成#
DataPreparationのDATASETSにタスク実行でDATASETSを作成します。

左のメニューからDATASETSをクリックし、ADD DATASETの右にある矢印をクリックし、メニューからTalend Jobをクリックします。
![28_DataPreparation_DATASETS_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/84b34525-8156-b705-8d63-f82411808b02.jpeg)

ADD TALEND JOB DATASET画面が開かれましたら、Dataset nameにLive_DummyDataを設定し、UsernameとPasswordはTACにログインしたユーザーに設定し、右下のTEST CONNECTIONボタンをクリックします。
![29_DataPreparation_DATASETS_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/1d5f4bc2-79e1-4f36-4335-57aec563217a.jpeg)

UsernameとPasswordが正しければ下にTaskが表示されますので、選択可能になっているDummyDataを選択します。
このTaskの名称はTACでタスク登録した名称から"dataprep_"が除去された名称となっています。
![30_DataPreparation_DATASETS_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/841f1785-9ecf-6354-9618-03eb660297e5.jpeg)

設定した内容を確認して右下のADD DATASETボタンをクリックします。
![31_DataPreparation_DATASETS_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/48e7dbb8-f77a-627c-0497-0f73cd73e6ed.jpeg)

しばらくするとジョブが実行されて作成されたDATASETが表示されます。
![32_DataPreparation_DATASETS_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/cdf3c2a1-4fbb-85c1-ab8d-0bce6cebcde6.jpeg)

#まとめ#
今回はCSVファイルからの入力にしていますが、入力はTalendコンポーネントのInput系が全て使えますので、データベースからの取り込みも容易に行ことができますし、PREPARATIONSでクレンジング定義を登録してtDataprepRunコンポーネントを追加して実行すれば、データベースからデータを読み込んでクレンジングしてDATASETに出力することも可能になります。

これまで紹介したDataPreparationの機能とTalend Studioを活用すれば、クレンジングの定義を簡易に作成することができ、データベースからのデータ取得が容易に行うことが可能になります。