ETLツール Pentahoを使ってみよう！【Pentaho ファーストステップガイド PDI使い方編】

# Pentaho ファーストステップガイド PDI使い方編
## はじめに
本記事では、Pentahoソフトウェア[^1] Ver10.2のETL機能であるPDIの基本的な使い方について紹介します。
なお、Pentahoのトライアル版のインストール方法についてはこちらの記事をご参照ください。
[ETLツール Pentahoのトライアル版をインストールしてみよう！【Pentaho ファーストステップガイド インストール編】](https://qiita.com/ryota_akai/items/7f463268dc33cae025fa)

## PDIの紹介
Pentaho Data Integration（PDI）は、各種データソースからデータウェアハウス、データマートを作成する際の、データ抽出・変換・集約・ロード処理といったETL処理（Extract, Transformation & Loading）のプログラムを開発する構築支援ツールです。PDIは、GUIによるプログラムレスでのビジュアル開発によって、高生産性、高品質なデータウェアハウスの構築を可能とします。

## PDI（Spoon）を起動する
以降で説明するデータ変換や加工などを実施するには、PDIが提供するGUI（Spoon）を最初に起動する必要があります。
PDIを起動するユーザに管理者権限があるかどうかで起動方法が異なります。
なお、初回起動時は初期化処理のため10分程度掛かることがあります。
- **管理者権限のあるユーザの場合**
起動するユーザに管理者権限がある場合はスタートメニューから起動します。
［スタートメニュー］－［すべて］－［Pentaho Enterprise Edition］－［Data Integration］で起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/8f3bb561-888d-401b-adea-102d2915018b.png)

## PDIの画面構成
PDIの画面は次のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/e885b14c-9a35-429f-8490-8d45fa88d08c.png)

## 単純なデータ変換を作成する
### Step1: 新しいデータ変換定義画面を開く
[ファイル］メニュー－［新規］－［データ変換］を選択して、新しいデータ変換定義画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/da5e11b6-1879-4aff-966b-dc4211ce45e3.png)

### Step2: CSVファイルを読み込む設定を追加する
PDIに含まれるサンプルのCSVファイルを読み込むよう次の手順で設定します。
1. 部品一覧の［入力］－［CSV入力］をキャンバスにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/7eb1e29b-ea5f-4c97-9cc1-45b9e075a96d.png)
2. ［CSV入力］ステップをダブルクリックし設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/a86289d0-ccff-4e46-8369-1e149f3f2be3.png)
3. 設定画面に次の内容を設定します。<br>
   |#|設定項目|設定内容|備考|
   |:--|:--|:--|:--|
   |1|ファイル名|C:\pent\p102\design-tools\data-integration\samples\transformations\files\sales_data.csv<br>（上記のパスは、例です。）|サンプルのCSVファイルの格納場所をフルパスで指定します。<br>［参照］ボタンをクリックするとファイルダイアログから選択できます。|
   |2|データ型を自動変換|オフ|データ型の変換を省略して性能向上を図る機能です。後続処理でエラーになることがあるので、オフにすることをお勧めします。|
   |3|文字コード|ISO-8859-1|左記のとおり指定してください。|
   |4|フィールド|（［フィールドを取得］ボタンをクリックし、次に表示されるダイアログで［OK］ボタンをクリックしてください。）|読み込むファイルの1行目をフィールド名として利用し、2行目以降のデータで型を推測します。|
   
   設定後の内容は次のとおりです。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/b0ed2907-3681-4520-989b-618126abf9d2.png)

正しく読み込めるかどうかはプレビュー画面で確認できます。確認手順を次に示します。
1. [プレビュー］ボタンをクリックします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/ae3205e3-0b11-4dff-92e6-c569a7a14b17.png)
2. プレビューする行数をダイアログに入力して［OK］ボタンをクリックすると、次のようなプレビュー画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/fe562ca7-1710-41d6-a2ba-f53aa22ede31.png)
3. 表示されたプレビュー画面で問題がないか確認します。確認する項目の例を次に示します。
   - **列名が表示されている**
   - **データが複数行表示されている**
   - **文字化けしていない**
   問題なければプレビュー画面の［閉じる］ボタンをクリックしてプレビュー画面を閉じます。
4. 設定完了後、［OK］ボタンをクリックし設定画面を閉じます。

### Step3: Excelファイルを出力する設定を追加する
読み込んだCSVファイルをExcelファイルに出力するよう次の手順で設定します。
1. 部品一覧の［出力］－［Microsoft Excel writer］をキャンバスにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/9f2aa358-3190-48d2-ade4-f31e3a37de6f.png)
2. キャンバス上の［CSV入力］ステップと［Microsoft Excel writer］ステップをつなげます（ホップを設定）。
   次の手順で実施してください。
   1. ［CSV入力］ステップの上にマウスポインタを持って行くと次のような吹き出しが表示されます。
      ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/6c599243-c502-4d3a-8121-7794e327f112.png)
   2. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/5c558f23-a618-49c6-bf57-becf0586fe5a.png)をクリックし、マウスポインタを［Microsoft Excel writer］ステップまで移動させクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/ce1dc59f-1971-4ebf-8080-07d08e6e6ea0.png)
   3. ［ステップのメインアウトプット］を選択し、接続（ホップ）を完了します。
      ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/10bcd2f4-7dd5-4631-8a71-a3f5169cf5f0.png)
   :::note
   ホップは次の方法でも設定できます。
   - ［Shift］キーを押した状態で、［CSV入力］ステップをクリックしたまま、マウスポインタを［Microsoft Excel writer］ステップまで移動させクリックを放します。
   -  ホイールがついたマウスであれば、［CSV入力］ステップでスクロールをクリックしたまま［Microsoft Excel writer］ステップまで移動させクリックを放します。
   :::
3. ［Microsoft Excel writer］ステップをダブルクリックし設定画面を開きます。   
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/81cd169e-7dbc-46f7-859c-d60cd57388e3.png)
設定画面には次の内容を設定します。
   |#|設定項目|設定内容|備考|
   |:--|:--|:--|:--|
   |1|ファイル名|（任意の場所を指定してください。拡張子（「.xls」など）は不要です。）|変換後のExcelファイルの格納場所をフルパスで指定します。ファイル名はCSVファイル名と異なる名称も指定できます。<br>［参照］ボタンをクリックするとファイルダイアログから選択できます。|
設定後の設定画面は次のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/8c0032cc-58ba-4b2d-a6c4-63860f1e0491.png)
設定完了後、［OK］ボタンをクリックして設定画面を閉じます。

### Step4: 作成したデータ変換を保存する
［ファイル］メニュー－［保存］を選択して、データ変換定義を保存します。新規に保存する場合はファイルダイアログが表示されますので、任意の場所に保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/d0f90102-6593-4674-b192-f9bd07f3c185.png)

## データ変換を実行する
作成したデータ変換を実行する方法について説明します。
1. キャンバスの左上にある![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/0018e9e5-aa8a-4b1b-a716-e2d5013acf5a.png) （実行）ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/a1d632ad-4c9c-4cf7-ade6-4b7a045d4dc7.png)

2. ［データ変換の実行］ダイアログが表示されますので、［実行］ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/a21f9d9b-58ab-49af-8daa-58d2618f90f8.png)

3. 実行すると右下に実行結果のペインが表示されます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/558aaee3-4e15-4d4b-98f4-8642e7e14f31.png)
   
   正常に実行したステップの右上に緑色のチェックマークがつきます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/2edbd1b9-e0a8-4e35-a88b-1552507dbbd1.png)
   
   実行に失敗したステップは赤枠で囲まれ右上に赤色の停止マークがつきます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/68840bbe-e1bf-4c16-a7f1-db7dc0acdcf9.png)
   
4. データ変換に成功すると、指定した場所にExcelファイルが出力されます。
   Excelファイルを開くと、読み込んだCSVファイルの中身が出力されていることを確認できます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/b86a4892-65f0-4ceb-bb81-5f10c9c6e3ce.png)

5. 確認できたらExcelファイルを閉じます。

## 実行結果のデータの中身を確認する
PDIではステップごとに実行結果を確認できます。

### Step1: 各ステップの実行結果を確認する
実行すると右下に実行結果ペインが表示されます。［データをプレビュー］タブをクリックするとキャンバスで選択しているステップの実行結果を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/453355de-f514-46af-8157-3c60e17239bf.png)

### Step2: データをグラフ化する
PDI上でデータをグラフ化して視覚的にデータを把握できます。
ここでは［Microsoft Excel writer］ステップで［POSTALCODE］列の欠損があるかどうかを確認します。
1. ［Microsoft Excel writer］ステップをクリックし、右上の![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/a9d35e43-2580-4959-9bef-f680aa2a1de9.png)をクリックします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/a4b433c3-2873-4354-bc27-b3c9e129f703.png)
   次のような画面が表示されます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/5706b5b4-c4ed-48a9-ad36-4627bb2eedff.png)

2. ［Table］のプルダウンメニューから横棒グラフを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/b78085e9-a37e-4770-976a-eeca57bb0a77.png)
次のような画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/51c99718-1b44-4d01-a06d-df095017f7bd.png)

3. ［Layout］にフィールドを設定します。
ここでは、横棒グラフの横軸に［ORDERNUMBER］列、縦軸に［POSTALCODE］列を設定します。
   1. ［ORDERNUMBER］列の配置
   ［Horizontal Axis］に［ORDERNUMBER］列をドラッグ＆ドロップします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/8a76588d-81d1-4e9c-8e73-5c56a0442938.png)
   2. ［POSTALCODE］列の配置
   ［Vertical Axis］に［POSTALCODE］列をドラッグ＆ドロップします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/bdc6952b-19ab-48a4-812d-a89619bd5f6b.png)

4. ［Not Available］があることを確認します。
   ［Not Available］（欠損）が表示されている［POSTALCODE］列に、欠損があることを示します。
   （横棒の大きさは［ORDERNUMBER］の合計値を表しており、欠損の個数ではありません。）
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/d884371c-a8d4-46eb-90f5-ee26c801da53.png)

5. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/66661c40-7ba3-47f1-87df-3f5b5ba2bec7.png)をクリックし、データ変換定義画面に戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/d2472993-01a4-41f3-bad3-d7b7832f5aff.png)

## 不要なデータを除外する
［フィルター］ステップで条件式を設定し、不要なデータを除外すれば、欠損を回避できます。
1. 部品一覧の［フロー］－［フィルター］をキャンバスにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/5a8a50bc-c067-4983-b216-0309f1922862.png)

2. キャンバスに配置した［フィルター］ステップを、［CSV入力］ステップから［Microsoft Excel writer］へのホップの上にドラッグします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/cded07fc-f1a5-464b-9d22-a7e316009394.png)

   ホップの上にステップをドラッグすると次の図のようにホップが太くなる場所があります。そこで［フィルター］ステップをドロップします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/9887e8d4-e1f1-4e75-aa59-ed7ca578b81d.png)

   次の図のようなメッセージが表示されますので、［はい］ボタンをクリックします。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/5594cdd4-127e-40af-be52-83ad7715adb0.png)

   そうすると次の図のように、PDIが自動でホップを分割し、つなぎ直します。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/14a7880a-1608-4f81-afdb-277b4d5282f2.png)

   :::note warn
   次の図のように［フィルター］ステップの左に![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/ce688b12-aa26-408c-8d35-edb2cbbf960f.png)が付いていない場合は、分割できていません。
   :::
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/09a05520-e1e3-4320-bf6a-ea044240ae2c.png)
   
3. ［フィルター］ステップをダブルクリックし設定画面を開きます。
   設定画面にはステップ名のほか、次の内容を設定します。
   |#|設定項目|設定内容|備考|
   |:--|:--|:--|:--|
   |1|条件式が真（True）のときに実行する処理|Microsoft Excel writer||
   |2|フィルタ条件（左）|POSTALCODE||
   |3|フィルタ条件（中）|IS NOT NULL||

   設定後の設定画面は次のとおりです。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/ba661188-f026-43b5-a936-6119a11478eb.png)

   :::note
   設定画面を閉じると次の図のように［フィルター］ステップと［Microsoft Excel writer］のホップに が付きます。
   :::
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/941755f4-dee7-401c-987e-4faf7d500519.png)

## データ変換を再実行する
次に示す手順で加工後のデータを変換し、問題ないことを確認します。
1. 「[データ変換を実行する](#データ変換を実行する)」を参照し、データ変換を実行します。
   
   :::note
   「[データ変換を実行する](#データ変換を実行する)」で作成したExcelファイルを開いたまま実行すると手順2でエラーになります。Excelファイルを閉じてから実行してください。
   :::
2. 「[データをグラフ化する](#step2-データをグラフ化する)」を参照し、再度グラフ化します。
3. ［Not Available］のデータがないことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3681459/6e04e6a5-3306-40ec-900d-fbb67703998c.png)


## まとめ
今回はPentahoソフトウェア Ver10.2のETL機能であるPDIの基本的な使い方について紹介しました。
GUIで簡単にETL処理を作成できることを体験してみてください！

## 他社商品名、商標等の引用に関する表示
HITACHIは，株式会社 日立製作所の商標または登録商標です。
Excel、MicrosoftおよびWindowsは、マイクロソフト 企業グループの商標です。
Pentahoは、Hitachi Vantara LLCの商標または登録商標です。
その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

[^1]: データパイプラインの開発を支援する 日立のデータ統合・分析基盤 **Pentaho** https://www.hitachi.co.jp/products/it/bigdata/platform/pentaho/about/index.html