pentaho etl@devlove関西

27
Pentaho ETL&

Upload: hirokazu-tokuno

Post on 30-Jun-2015

525 views

Category:

Engineering


0 download

DESCRIPTION

DevLOVE関西 2014/03/29 プログラマ35歳定年説勉強会で発表した内容。

TRANSCRIPT

Page 1: Pentaho ETL@DevLOVE関西

Pentaho ETLでドラッグ&ドロップデータ変換

Page 2: Pentaho ETL@DevLOVE関西

自己紹介● 德納 弘和 (とくのう ひろかず)● 某社の工場のITシステム部門● 39才にして IT部門へ移動して4年目

– 遅れを取り戻すべく日夜勉強中● 少し覚えた言語

– VBA, SQL, JavaScript, Java, Perl, Shell...● コードを極力書かないのがお気に入り

– Pentaho ETL, Oracle APEX, Mojolicious

Page 3: Pentaho ETL@DevLOVE関西

2013年の学びと挑戦● ユニケージ開発手法● Perl, Mojolicious● Jenkins● 自動テスト jUnit, Mockito, shUnit2● Twitter Bootstrap, Google Maps APIなど● 勉強会の楽しさ!

– エフスタ!– オープンデータカフェ会津– JAWS-UG会津

● CODE for AIZU参加

Page 4: Pentaho ETL@DevLOVE関西

2014年の学びと挑戦● LODチャレンジ応募● Hack for Town in Aizu参加● Meteor(Node.js, MongoDB) on Nitrous.IO● GitHubデビュ〜● Amazon DynamoDB● DevLOVE大阪デビュ〜 今ここ

Page 5: Pentaho ETL@DevLOVE関西

Pentaho ETLって?

● Pentaho– 世界で最も人気のあるオープンソースETLツール– 他にBIサーバー, OLAP, Data Miningなども

ETL (Extract, Transform, Load)– 何かを持って来て、加工して、出力する事

Page 6: Pentaho ETL@DevLOVE関西

何が良いの?

● Open Sourceで無料!● 人気がある→活発な開発、長期サポート● 有償サポートもあり● 「プログラム」無しで簡単に処理出来る

– ノンプログラマの学習コストが低い● 高速処理 : 基本は行単位の並列実行● 多彩な標準部品

– 入出力 : Text, XML, DB(40種+!), Excel, CIFS, Mail

– 複雑な処理はJavaScriptなどで記述可能

Page 7: Pentaho ETL@DevLOVE関西

ドラッグ&ドロップ● 基本はマウス操作

Page 8: Pentaho ETL@DevLOVE関西

処理が見える

● データの流れが見える● 前のStepの完了を待たずに次の処理が開始

– 特にDBなど遅いデバイスを使う場合に完了が早い

Page 9: Pentaho ETL@DevLOVE関西

DDL自動作成、SQL実行

Page 10: Pentaho ETL@DevLOVE関西

テーブル修正のSQLも自動作成

Page 11: Pentaho ETL@DevLOVE関西

こんな事も出来ます● データのグラフ表示、分析

– ぱっとインタラクティブな分析● Clusteringで分散処理● 流行のHadoop連携● リモート処理用Webサーバー(Carte)

Page 12: Pentaho ETL@DevLOVE関西

良く無い所● 日本語の情報が少ない● 「普通のプログラマ」に受けが良く無い

– 並列処理 : 感覚的にShell scriptに近い– GUI : 何でもクリックは手間– 素人っぽさ : この手のソフトは世界中で反発される– 「いつも通り」に出来ない : 経験者利点がなくなる

● 型から外れると面倒– Pentahoに限らず、Framework共通の欠点– 入力列が未確定の場合は複雑な処理が必要

● ETLファイルを動的に修正するとか、、、

Page 13: Pentaho ETL@DevLOVE関西

ご清聴ありがとうございました

Page 14: Pentaho ETL@DevLOVE関西

以下は時間が足りず、話せなかった内容です。

Page 15: Pentaho ETL@DevLOVE関西

色々な標準部品 入力● CSV input 1ファイルの読み込み。● Text file input 複数のファイルの読み込み。正規表現も可● Generate Rows 空や定数の入力を作る● Get File Names フォルダ内のファイル名を取得● Data Grid Row毎に異なる値を設定可能● Table input データベースからの読み込み

Page 16: Pentaho ETL@DevLOVE関西

色々な標準部品 出力● Table output DBへの書き込み  入れ替えと追加だけ出来、変更は出来ない

● Update データベースの変更だけが出来る● Insert / Update データベースの追加と変更が出来る● Delete データベースの削除● Text file output ファイルへの書き込み

Page 17: Pentaho ETL@DevLOVE関西

色々な標準部品 変換● Select values 残すフィールドの指定

削除するフィールドの指定フィールド名の変更、型変換

● Calculator 計算。 機能が少ないので冗長になる。Modified Java Script Valueを代わりに使用

● Replace in string 文字列の置き換え1フィールドの置き換えだけの場合に使います。 複数の処理になるとModified Java Script Valueを使う事が多いです。

● Row normalizer 指定行を列に変換。使い方が難しい。● Row denormalizer 複数の列を行に変換。使い方が難しい。● Sort rows 並べ替え。良く使います

Page 18: Pentaho ETL@DevLOVE関西

色々な標準部品 ユーティリティ● Write to log デバッグに重要ですので出力しましょう● Mail e-mailを送る

Page 19: Pentaho ETL@DevLOVE関西

色々な標準部品 フロー● Abort エラーや異常値が見つかったら中断● Append streams 1つの入力の後に別の入力を繋げて出力● Dummy (do nothing) デバッグに追加する事もある

複数入力を順序を気にせず繋げる場合にも● Filter rows フィルターです。 非常に良く使います。● Java Filter 分岐条件をJava Expressionで書ける● Switch / Case 条件によって複数の分岐先を指定

Page 20: Pentaho ETL@DevLOVE関西

色々な標準部品 スクリプト● Modified Java Script

Javascriptを使って色々な処理が出来る 新しい列の作成、文字列の切り出し、 計算、型変換など。 使いすぎるとGUIの意味が無い、、、

● Execute SQL script 入力を元にSQLを実行 Where条件でDeleteとか

Page 21: Pentaho ETL@DevLOVE関西

色々な標準部品 ルックアップ● Stream lookup フィールドの値が同じ場合に

「ステップ名」のフィールドを取得● Database lookup 入力を元にデータベースに問い合わせて

フィールドを取得毎回DBに問い合わせるので遅い。大量のデータを処理するなら別にTable

inputとStream lookupを使った方が良い。● Database join Database lookupは表かビューに対して

単純なlookupしか出来ないが、joinでは複雑なSQLを書く事が出来る

Page 22: Pentaho ETL@DevLOVE関西

色々な標準部品 結合● Merge Join SQLで言う所のInner Join, Outer Join

● Merge Rows (diff) 二つの入力の差を出力

Page 23: Pentaho ETL@DevLOVE関西

色々な標準部品 統計● Group by ユニークはRowだけを出力したり、件数を

数えたり、合計を計算したりする文字列を連結する事も可能

● Analytic Query 前後のRowの情報を取得する事が出来る● Sample rows テストでデータを減らしたりする場合に

使う事が多い先頭行だけ取得したい時にも使う

Page 24: Pentaho ETL@DevLOVE関西

色々な標準部品 ジョブ● Copy rows to result

入力をメモリに保持● Get rows from result

メモリから入力を取得● Get Variables 変数の取得● Set Variables 変数の設定

Page 25: Pentaho ETL@DevLOVE関西

色々な標準部品 マッピング● Mapping (sub-transformation)

いわゆるサブルーチンの呼び出し● Mapping input step

● サブルーチンでの入力取得● Mapping output step

サブルーチンでの出力

Page 26: Pentaho ETL@DevLOVE関西

遅いStepも一目で見える

Page 27: Pentaho ETL@DevLOVE関西

参考● Pentaho.com(英語)● Pentaho Community(英語)● 開発者Matt Castersのブログ(英語)● Adventures with Open Source BI(英語)● Pentaho日本正規代理店KSKアナリティクス● Think IT Pentaho徹底解説● 技術的に自由なブログ