125
Pentaho ETLハンズオン オープンソースBI 勉強会 #21 2015/08/25TwitterID:@teruu

Pentaho ETL ハンズオン

Embed Size (px)

Citation preview

Pentaho ETLハンズオン

オープンソースBI 勉強会 #21

[2015/08/25]

TwitterID:@teruu

本日の内容

•勉強会について

•ビジネスインテリジェンス概要

•PDIのダウンロードの仕方

•起動、プレビューと実行、ログ確認

•データ変換作成 – PDI版 Hello, world!

– テキストファイル入出力

– Excelファイル入出力

– DB入力

– DB出力

ETLの処理のうち、 E(Extract:抽出) L(Load:ロード) を中心に紹介 T(Transform:変換) については簡単にふれます

自己紹介

川崎照夫

TwitterID: teruu

所属:KSKアナリティクス

BI歴:3年

DB歴:20年

•随時、ツイートのお願い

•挙手のお願い ・勉強会参加理由 ・Pentahoについて知りたい ・PentahoのETL(PDI)について知りたい

Yahooリアルタイム検索

「pentaho」定点観測中

・「日本語の資料が全然ない」というツイート

日本のPentahoユーザ

・日本語の情報が見つからない

・やりたいことがなかなかできない(簡単なことなのに...)

・フラストレーションがたまりがち

5/83

Pentahoのチュートリアル資料を充実

これまでの開催

• #5 MongoDB+Pentaho ハンズオン

• #6 OLAP ハンズオン

• #7 ETL ハンズオン

• #8 定型レポート

• #9 CTools (ダッシュボード)

• #10 OLAP ハンズオン

• #11 ETL ハンズオン

• #12 定型レポートハンズオン

• #13 OLAP/ETLハンズオン (土曜開催)

• #14 Pentahoの全体構成と構造

• #15 Pentahoのビルドに挑戦

• #16 OLAPハンズオン

• #17 ETLハンズオン

• #18 CToolsハンズオン

• #19 定型レポートハンズオン

• #20 OLAPハンズオン

• #21 ETLハンズオン ※今回

次回以降

•#22 CTools(ダッシュボード)ハンズオン?

•#23 定型レポートハンズオン

•#24 OLAPハンズオン

•#25 ETLハンズオン

これまでの資料

オープンソースBI勉強会メモ https://www.evernote.com/shard/s29/sh/90da8213-b225-4949-861b-256fae4d8b81/4662358c944791be43bbe1823c84ea49

•#8 定型レポート http://www.slideshare.net/teruok/pentaho-reporting-20140729

•#10 OLAPハンズオン https://www.evernote.com/shard/s29/sh/be254819-1722-4d55-bb34-549ebf898c25/f85483e7059dd4c56506d7ca0a5b0578

会員制ドキュメント・ダウンロード・サービス「LiBRA」(リブラ) →提供資料の加工編集、再配布が可能 (http://libra.netcommerce.co.jp/) 以降はLiBRAの「ビジネス・インテリジェンス」から引用 (http://libra.netcommerce.co.jp/library/knowledge/841)

Pentahoについて

•オープンソースベースのBIスイート

•以下の製品群で構成

EE CE 主な対象

ダッシュボード ダッシュボードエディタ

CDF(Community

Dashboard

Framework)

経営陣

Reporting

Reporting(定型レポート) ビジネスユーザ

メタデータ

インタラクティブレポート Adhocレポート

OLAP

(多次元分析) Analyzer JPivot/saiku/Pivot4

J

アナリスト、

ビジネスユーザ

ETL(データ統合) Data Integration 開発者、DB管理者

データマイニング Weka アナリスト、

パワーユーザ

Pentaho Data Integration(PDI)

GitHub(ギットハブ)での開発

PDIをはじめPentahoのオープンソース製品は、ソフトウェア開発のための共有ウェブサービスである「GitHub」を利用して開発が行われています。

GitHubにアクセスすることで、活発なソフトウェア開発の様子を見ることができます。また、公開されているソースコードを参照でき、バグの修正などの形でPDIのソフトウェア開発に参加することも可能です。

◇PDIのGitHubリポジトリ

https://github.com/pentaho/pentaho-kettle

先日、プルリクがマージされた!

ダウンロード

•Pentaho配布サイト

http://community.pentaho.com/

•Pentaho配布サイト PDI http://sourceforge.net/projects/pentaho/files/Data

%20Integration/

•ダウンロード候補 – pdi-ce-5.4.0.1-130.zip

関連書籍

このスライドでは、左側の「Pentaho Data Integration Beginner’s Guide」の内容を一部参考にしています。

インストール

•ダウンロードするだけ(Javaの環境があれば)

•DBのJDBCドライバを追加

– postgresqlのドライバは同梱されている

•SourceForgeのサイトからダウンロードし、

Windowsであれば、解凍したフォルダ中の

Spoon.batをダブルクリック

•起動後、言語の設定を確認(日本語になっているか)

言葉の定義

•データ変換

– ステップ

– ホップ

•ジョブ

– ジョブエントリ

– ホップ

→ 今回はデータ変換だけを扱います

データ変換作成①

•PDI版Hello, world!

•作業フォルダ

– C:¥pentaho¥pdi_work

Spoon起動 Windowsの場合、Spoon.batファイルをダブルクリックして起動します。

新規→データ変換 ファイル→新規→データ変換、を選択します。

デザイン タブ

キャンバス

ツールバー

行生成 画面左側のデザインタブで「入力」ノードを開き、一番下の「行生成」ステップをキャンバスにドラッグする。

ダミー 「フロー」ノードを開き、「ダミー(何もしない)」ステップをキャンバスにドラッグする。

ホップ(hop) 「行生成」ステップ上で、マウスのホイールをクリックし、そのまま「ダミー」ステップまでドラッグすると、2つのステップを接続するホップ(矢印)が作成される。

行生成編集 「行生成」ステップをダブルクリックして、ステップの編集画面を表示。下記の通り入力する。(名称、タイプ、値)リミットは初期値の「10」になっているのを確認。タイプはドロップダウンから「String」を選択。 「OK」をクリックして編集画面を閉じる。

データ変換 プロパティ

編集→設定をクリックし、データ変換プロパティを表示。データ変換名に「hello world」と入力。「OK」をクリックしてプロパティを閉じる。

名前を付けて保存 ファイル→保存をクリック。「hello_world」と入力して保存。

データ変換デバッグ 「ダミー」ステップをクリックして選択し、ツールバー上の「プレビュー」をクリック。

プレビュー 「クイック起動」ボタンをクリックするとプレビューが表示される。

実行 画面上部のツールバーから「実行」をクリックすると、下記の画面が表示されるので「実行」ボタンをクリック。

実行結果 実行されたステップに緑のチェックが付き、 画面下部に実行結果が表示される。

ログ 「ログ」タブを表示して、エラーが無かったか確認する。 エラーは赤で表示される。

データ変換作成①

•PDI版Hello, world!

•作業フォルダ

– C:¥pentaho¥pdi_work

データ変換作成②

•テキストファイル入出力

•ETLのT(Transform:変換)の事例として「選択/名前変更」ステップを使用

– ここでは不要なフィールド(列)を削除する

テキストファイル入力 新規→データ変換 を選択。 「入力」ノードから「テキストファイル入力」を選択。ダブルクリックして編集

ステップ編集 (ファイルタブ)

ダブルクリックして編集画面を表示。 「参照」ボタンをクリックして入力ファイル指定。「追加」ボタンをクリック。「ファイル名のリスト」欄に追加される。

全般タブ 「全般」タブを表示。 フィールド区切り文字は、デフォルトの「;」(セミコロン)を削除して、右側の「入力 タブ」ボタンをクリックしてタブを入力。

全般タブ 文字コードは、ドロップダウンリストから適切な文字コードを選択。ここでは「UTF-8」を選択。 フォーマットは行末コードを「DOS」「Unix」「mixed」から適宜選択。

フィールドを取得 「フィールドを取得」ボタンをクリック。「サンプル出力するレコード数」ダイアログが表示されるので、OKをクリック。

走査した結果 フィールドをサンプリングした結果が表示される。「閉じる」ボタンをクリック。 「OK」ボタンをクリックして編集画面を閉じる。

フィールド取得結果 取得されたフィールドの内容を確認。問題なければ「OK」をクリックして閉じる。

選択/名前変更 「変換」ノードから「選択/名前変更」ステップをキャンバスにドロップ。2つのステップを接続。 「選択/名前変更」ステップをダブルクリックして編集。 画面左上のステップ検索も利用可能。

ステップ編集 除去フィールド

「除去フィールド」タブを表示。 「フィールド名」の下の欄をクリックすると、欄の右端にドロップダウンの三角形が表示されるので、それをクリックして、「last_update」列を選択。

ステップ配置 「テキストファイル出力」ステップを追加し、ホップで接続。「Main output of step」を選択。

テキストファイル出力 ファイルタブ

「テキストファイル出力」ステップをダブルクリックして編集。ファイル名の「参照」ボタンをクリックして出力先のファイル名を指定。

テキストファイル出力 全般タブ

「全般」タブを表示。「タブの挿入」ボタンをクリックして、区切り文字としてタブを指定。 文字コード「UTF-8」を指定。

プレビュー 「テキストファイル出力」ステップを選択状態にして、ツールバー上のプレビューをクリック。プレビューが実行される。

実行 ツールバー上の「実行」をクリック。「データ変換の実行」画面が表示されるので、「実行」ボタンをクリック。

データ変換の保存 データ変換実行前に保存。

実行結果 実行結果を確認する。 出力先のファイルを開き確認。

データ変換作成②

•テキストファイル入出力

•ETLのT(Transform:変換)の事例として「選択/名前変更」ステップを使用

– ここでは不要なフィールド(列)を削除する

データ変換作成③

•Excelファイル入出力

•変換ステップとして「フィルター」「値マッピング」を使用

•サンプルデータとして、PDIのJIRA(バグ管理サイト)から出力したExcelファイルを使用

ステップを配置 入力:Excel入力、フロー:フィルター、変換:値マッピング、出力:Excel出力 の各ステップを配置し接続。 「フィルター」と「値マッピング」の間のホップは「Main output of step」を選択。

Excel入力 Excel入力をダブルクリックして編集。ファイルタブの内容を指定。スプレッドシートタイプは「Excel2007」を指定。

Excel入力 シートタブ

「シートの取得」ボタンをクリック、「入力リスト」で対象のシートを選択。

Excel入力 シートタブ

「開始レコード」「開始列」を指定。

Excel入力 フィールドタブ

「フィールドの取得」ボタンをクリック。

プレビュー 「プレビュー」ボタンをクリック。 内容を確認して「閉じる」をクリック。

フィルター フィルターをダブルクリックして編集。

フィルター 「フィルタ条件」に下記のように入力。「OK」をクリックして閉じる。

値マッピング 値マッピングをダブルクリックして編集。

Excel出力 「Excel出力」ステップをダブルクリックして編集。「ファイル名」を指定。

Excel出力 フィールドタブ

フィールドタブを表示。 「フィールドを取得」ボタンをクリック。

Excel出力 フィールドタブ

フィールド名とデータタイプが取得される。OKボタンをクリック。

実行 ツールバーの「実行」ボタンをクリック。 「実行」をクリック。

保存 実行前にデータ変換を保存。

実行結果 実行結果を確認する。

出力されたファイル 出力されたファイルをExcelで開いて確認する。

データ変換作成③

•Excelファイル入出力

•変換ステップとして「フィルター」「値マッピング」を使用

•サンプルデータとして、PDIのJIRA(バグ管理サイト)から出力したExcelファイルを使用

データ変換作成④

•DB入力

•DBはPostgresqlを利用

•サンプルデータは、pagilaというデータを使用

データベース接続作成 ビュータブの「データベース接続」を右クリックして「新規」を選択。

データベース接続 データベース接続を適宜設定。

接続名:pg (任意) 接続タイプ:PostgreSQL アクセス:Native(JDBC) ホスト名:localhost データベース名:postgres ポート番号:54320 ユーザ名:postgres パスワード:!84jJJJ#

検索 「検索」ボタンをクリック。 ※画像と異なるが[スキーマ] を クリックし、[pagila]をクリック。

最初の100行プレビュー 任意のテーブルを右クリックして、「最初の100行プレビュー」を選択。

プレビュー プレビューが表示される。

ステップ配置 下記のようにステップを配置します。

テーブル入力 テーブル入力を編集。 「SQLの選択」ボタンをクリック。

データベース エクスプローラー

データベースエクスプローラーが表示されるので、任意のテーブルを選択。

テーブル入力 SQLが生成される。

テキストファイル出力 「テキストファイル出力」ステップをダブルクリックして編集。

テキストファイル出力 フィールドタブ

「フィールドを取得」をクリック。

実行 ツールバーから実行をクリック。

出力ファイル 出力ファイルを開いて内容を確認。

データ変換作成④

•DB入力

•DBはPostgresqlを利用

•サンプルデータは、pagilaというデータを使用

データ変換作成⑤

•DB出力

ステップ配置 下記の通りステップを配置する。

テキストファイル入力 「テキストファイル入力」ステップで先ほど出力したファイルを指定。 「プレビュー」ボタンをクリック。

プレビュー プレビューを確認。

テキストファイル入力 全般タブ

全般タブで「入力タブ」ボタンをクリックしてタブを入力。

テキストファイル入力 フィールドタブ

「フィールドを取得」をクリック。

走査した結果 走査した結果が表示される。

テーブル出力 「テーブル出力」ステップを編集。テーブル名を指定。「列名を指定する」チェックボックスをONに。「フィールドを取得」ボタンをクリックして、フィールド欄に自動記入。「SQL」ボタンをクリック。

SQL文生成、実行 CREATE TABLE文が生成される。「実行」ボタンをクリックして、出力先のテーブル作成。

フィールドマッピング 「フィールドマッピング」ボタンをクリックして、マッピングの内容を確認。

実行 ツールバーの「実行」をクリック。「実行」ボタンをクリック。

実行結果 実行結果が表示される。

照会 DBに出力した内容を確認。 ビュータブのデータベース接続から該当の接続を右クリックして、「照会」を選択。

データベース エクスプローラー

該当のテーブルを選択。

プレビュー 該当のテーブルを右クリックして、「x行プレビュー」を選択。

プレビュー テーブルの内容が表示される。

データ変換作成⑤

•DB出力

まとめ

•ダウンロード

•起動

•プレビューと実行、ログ確認

•データ変換作成

– PDI版 Hello, world!

– テキストファイル入出力

– Excelファイル入出力

– DB入力

– DB出力

不明な点

•Pentahoのフォーラムへ

– 日本語でコミュニティー・サポート

http://forums.pentaho.com/forumdisplay.php?86

今後のテーマ(1)

•DWH

– スタースキーマ

– SCD(Slowly Changing Dimensions)

– CDC (Change Data Capture) – サロゲートキー

– MDM(マスターデータマネジメント)

•OLAP(ROLAP/MOLAP)

– キューブ設計

– MDX

今後のテーマ(2)

Pentahoの各製品

•PDI

•OLAP

•Reporting

•ダッシュボード

•データマイニング

今後のテーマ(3)

デザインツール

•スキーマワークベンチ

•アグリゲーションデザイナ

•メタデータエディタ

サードパーティー製品

•saiku

•Pivot4J

今後のテーマ(4)

その他のBI製品

•Tableau

•QlikView

今後のテーマ(5)

カラム指向DB

•HP Vertica

•Amazon Redshift

NoSQL DB

•MongoDB

•Hadoop Hive

インメモリDB

今後のテーマ(6)

データ可視化

•CTools

•D3

•Highcharts

•GIS系

データ分析手法

Rの活用

今後のテーマ(7)

•オープンデータの活用

•Pentaho オープンソース・コミュニティの活用

今後のテーマ(8)

•開発手法

•プロトタイピング

•ドキュメント

今後のテーマ(9)

•開発ツール

•SQLエディタ

•XMLエディタ

•ユーティリティ

•バージョン管理

•バグトラッキング

•テスト手法

•自動化手法

今後のテーマ(10)

運用

•Apache

•Tomcat

•クラウド活用(AWS)

•スケジューリング、バッチ実行

今後のテーマ(11)

ポータルサイト、CMSとの統合

•Liferay

•Alfresco

今後のテーマ(12)

学習メディアの活用

•ドットインストール

•Slideshare

•YouTube

今後のテーマ(13)

•プロフィットセンター/コストセンターの考え方