Upload
hirokazu-tokuno
View
2.625
Download
1
Embed Size (px)
DESCRIPTION
JAWS-UG 会津 第3回勉強会 with エフスタ!!での発表資料。説明出来なかったページ付き。
Citation preview
Pentaho ETLでドラッグ&ドロップデータ変換
自己紹介
● 徳納 弘和 (とくのう ひろかず)● 某社の工場のITシステム部門● 39才にしてIT部門へ移動して4年目
– 遅れを取り戻すべく日夜勉強中
● 少し覚えた言語
– VBA, SQL, JavaScript, Java, Perl, Shell...
● コードを極力書かないのがお気に入り
– Pentaho ETL, Oracle APEX, Mojolicious
Pentaho ETLって?
● Pentaho– 世界で最も人気のあるオープンソースETLツール
– 他にBIサーバー, OLAP, Data Miningなども
ETL (Extract, Transform, Load)– 何かを持って来て、加工して、出力する事
何が良いの?
● Open Sourceで無料!● 人気がある→活発な開発、長期サポート● 有償サポートもあり
● 「プログラム」無しで簡単に処理出来る
– ノンプログラマの学習コストが低い
● 高速処理 : 基本は行単位の並列実行● 多彩な標準部品
– 入出力 : Text, XML, DB(40種+!), Excel, CIFS, Mail
– 複雑な処理はJavaScriptなどで記述可能
ドラッグ&ドロップ
● 基本はマウス操作
処理が見える
● データの流れが見える
● 前のStepの完了を待たずに次の処理が開始– 特にDBなど遅いデバイスを使う場合に完了が早い
DDL自動作成、SQL実行
テーブル修正のSQLも自動作成
こんな事も出来ます
● データのグラフ表示、分析
– ぱっとインタラクティブな分析
● Clusteringで分散処理● 流行のHadoop連携● リモート処理用Webサーバー(Carte)
良く無い所
● 日本語の情報が少ない
● 「普通のプログラマ」に受けが良く無い
– 並列処理 : 感覚的にShell scriptに近い
– GUI : 何でもクリックは手間
– 素人っぽさ : この手のソフトは世界中で反発される
– 「いつも通り」に出来ない : 経験者利点がなくなる
● 型から外れると面倒
– Pentahoに限らず、Framework共通の欠点
– 入力列が未確定の場合は複雑な処理が必要● ETLファイルを動的に修正するとか、、、
ご清聴ありがとうございました
以下は時間が足りず、話せなかった内容です。
色々な標準部品 入力
● CSV input 1ファイルの読み込み。
● Text file input 複数のファイルの読み込み。正規表現も可
● Generate Rows 空や定数の入力を作る
● Get File Names フォルダ内のファイル名を取得
● Data Grid Row毎に異なる値を設定可能
● Table input データベースからの読み込み
色々な標準部品 出力
● Table output DBへの書き込み
入れ替えと追加だけ出来、変更は出来ない
● Update データベースの変更だけが出来る
● Insert / Update データベースの追加と変更が出来る
● Delete データベースの削除
● Text file output ファイルへの書き込み
色々な標準部品 変換
● Select values 残すフィールドの指定
削除するフィールドの指定
フィールド名の変更、型変換
● Calculator 計算。 機能が少ないので冗長になる。
Modified Java Script Valueを代わりに使用 ● Replace in string 文字列の置き換え
1フィールドの置き換えだけの場合に使います。 複数の処理になるとModified Java Script Valueを使う事が多いです。
● Row normalizer 指定行を列に変換。使い方が難しい。
● Row denormalizer 複数の列を行に変換。使い方が難しい。
● Sort rows 並べ替え。良く使います
色々な標準部品 ユーティリティ
● Write to log デバッグに重要ですので出力しましょう
● Mail e-mailを送る
色々な標準部品 フロー
● Abort エラーや異常値が見つかったら中断
● Append streams 1つの入力の後に別の入力を繋げて出力
● Dummy (do nothing) デバッグに追加する事もある
複数入力を順序を気にせず繋げる場合にも
● Filter rows フィルターです。 非常に良く使います。
● Java Filter 分岐条件をJava Expressionで書ける
● Switch / Case 条件によって複数の分岐先を指定
色々な標準部品 スクリプト
● Modified Java Script
Javascriptを使って色々な処理が出来る
新しい列の作成、文字列の切り出し、
計算、型変換など。
使いすぎるとGUIの意味が無い、、、
● Execute SQL script 入力を元にSQLを実行
Where条件でDeleteとか
色々な標準部品 ルックアップ
● Stream lookup フィールドの値が同じ場合に
「ステップ名」のフィールドを取得
● Database lookup 入力を元にデータベースに問い合わせて
フィールドを取得
毎回DBに問い合わせるので遅い。
大量のデータを処理するなら別にTable
inputとStream lookupを使った方が良い。
● Database join Database lookupは表かビューに対して
単純なlookupしか出来ないが、
joinでは複雑なSQLを書く事が出来る
色々な標準部品 結合
● Merge Join SQLで言う所のInner Join, Outer Join
● Merge Rows (diff) 二つの入力の差を出力
色々な標準部品 統計
● Group by ユニークはRowだけを出力したり、件数を
数えたり、合計を計算したりする
文字列を連結する事も可能
● Analytic Query 前後のRowの情報を取得する事が出来る
● Sample rows テストでデータを減らしたりする場合に
使う事が多い
先頭行だけ取得したい時にも使う
色々な標準部品 ジョブ
● Copy rows to result
入力をメモリに保持
● Get rows from result
メモリから入力を取得
● Get Variables 変数の取得
● Set Variables 変数の設定
色々な標準部品 マッピング
● Mapping (sub-transformation)
いわゆるサブルーチンの呼び出し
● Mapping input step
● サブルーチンでの入力取得
● Mapping output step
サブルーチンでの出力
遅いStepも一目で見える
参考
● Pentaho.com(英語)● Pentaho Community(英語)● 開発者Matt Castersのブログ(英語)● Adventures with Open Source BI(英語)● Pentaho日本正規代理店KSKアナリティクス● Think IT Pentaho徹底解説● 技術的に自由なブログ