Talend Data Preparation を試す

ETLツールはあまり使わないのですが、Talendのエントリ製品である、データプレパレーションはユニークな使い方を提供するので、紹介します。

[Talend データプレパレーション](https://jp.talend.com/products/data-preparation)

導入が的をついています。

>「IT部門は営業部門から寄せられるデータへの要件を満たすことに忙殺され、データアナリストは労働時間の8割をデータクリーニングに費やしています。」

ふむふむ。同感。

> 「Talendのデータプレパレーション製品は、これらの課題に対処するために、直感的なセルフサービス型データプレパレーションとデータ統合を組み合わせています。」

おお！で、何ができるの？

データの準備とかクレンジングといっても、データ型マッチング、文字列変換、外れ値除去、スムージング様々で、そのほか定型化できそうもないものが沢山あるのですが、どの辺に刺さる製品なのでしょうか？

# Talend Data Preparationの入手、インストール

以下のページからダウンロードします。無償版があり、気軽に導入できます。
[Talend Data Preparation Desktop](https://jp.talend.com/download/talend-open-studio#t8)

インストールすると、こんなアイコンができるので、これを起動すればOKです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/7c1cffa7-9269-2b7b-87cd-2a6703d2dcf9.png)

実はこのソフトウェアはWebベースになりますので、以下のようにブラウザが起動します。
以下のようにローカルホストを使って起動しますので、特にWebサーバーなどの準備は必要ありません。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/59d3a0a3-1c9b-6436-7a12-c0de88af6ae9.png)

今後はこのような形態のBIツールが増えるんでしょうね。

# Talend Data Preparationの起動

起動すると以下のようなデータセットを選択する画面になります。
Preparationsというのはすでに処理済みのプロジェクトのようです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/5ebb9170-4076-520a-24d4-dac3bfe841ff.png)

CRM Phone Numbersというプロジェクトを開いてみましょう。これは単なる電話帳リストです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/addeb539-9d6d-ed8a-6ab4-d8e81e95b4c5.png)

左側のペインから、

+ recipe (クリーニングの処理がリストになっているもの）
+ データセットの表
+ 属性ビュアー

となっているようです。

# recipeペイン

Power BIのクエリーエディタのようにステップバイステップでレシピを構築していきます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/23fdbefd-8c4a-6f8d-8141-624c0e42fcba.png)

デフォルトで入っているレシピの途中の行まで戻ると、そこまでの処理が実行された結果が表に現れます。
ここでは３番目のステップで"Fill empty Cells with Test on column"という処理を行っていますが、最終列に追加されたPHONE NUMBER TO USEの空行に、PHONEという列の値を補完するという処理になります。
対象となる空セルがハイライトされており、非常に直感的に確認しながらステップを追加できます。

# 表ペイン

こちらは通常のデータテーブルのような使い方ができます。セル、行や列を選択してそれぞれの特徴を右の属性ビュアーで確認できます。ここでは列ごとにその特徴を見てみましょう。

# 属性ビュアーペイン

まずIDを見てみましょう。これはシーケンシャルなIDで、生データでは１～１０００までの連番が入っていましたが、クレンジング時に１行消されています。
VALUEタブで見てみると以下のように総数が999となっていることで確認できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/f6738b61-8288-b261-1ffa-8e057635d056.png)
CHARTタブで見ると、以下のように抜けているIDがどのあたりにあるかがわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/81f2af25-f48f-041a-d438-92619b43b16b.png)
PATTERNタブでみると、以下のように何桁の数値がどれだけ存在するかがグループ集計されて出ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/7d229c61-891b-ba4b-1f08-66e75f85f51c.png)
最後のADVANCEDでは、以下のように統計的なビューが用意されています。メディアンやクオンタイル値を見ることが可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/488d2f6f-86a1-71bf-bfdc-26a4acf2f039.png)

このID列では、抜け値以外はあまり有意義な分析とは言えないですが、他の列を使うとこの機能が強力なものであることがわかります。

FIRST列でCHART : Justinという名前が最も多いことがわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/70d8e7d4-c127-cea2-a938-d26f5de92e77.png)
FIRST列でPATTERN : 名前はすべて大文字から始まっていることと、５文字の名前が最も多いことがわかります。最低３文字、最高１１文字ということもわかります。この時１１文字はChristopherさんであることもこのバーチャートを選択することですぐにわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/ee8f141a-99af-7c47-29a1-b756bbabd486.png)
PHONE列でPATTERN : すべて同じフォーマットでいくつかの空行があることがわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/83d8daa2-8d47-1b1c-a060-d5667e2b2b64.png)

このような集計はなかなか通常の処理ではできないので、生データをどのような方針でETLをしていくかの指針になります。
フォーマットの乱れ、外れ値や文字化けなどをつぶさに見つけるには非常に強力な武器になるでしょう。

以下のようなワークフローがヘルプにありましたが、このようにETLの初期段階からデプロイ、Hadoopクラスタでの実行などライフサイクルにわたって適用できるのはさすがTalendという感じですね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/146939/14053521-da63-cfd8-af07-8517ca7e05fb.png)