2013年4月22日月曜日

初めてのPentaho Data Integration 4 良く使うStep

良く使うStepたち。 具体的な使い方はSampleやCommunity Siteを参照して下さい。
使用頻度は扱うデータと目的に大きく依存しますので参考程度にして下さい。
  • 入力
    • CSV input
      • 1ファイルの読み込み。
    • Text file input
      • 複数のファイルの読み込み
      • ファイル名に例えば*.txtなどの正規表現も使える
    •  Generate Rows
      • 空や定数の入力を作る
    • Get File Names
      • フォルダ内のファイル名を取得
      •  その後、フィルターを通してファイルを読み込んだりする事が多い
    • Data Grid
      • Generate Rowsと異なり、Row毎に異なる値を設定出来る
      • テストの時にダミーデータを作るのに便利
    • Table input
      • データベースからの読み込み
  • 出力
    • Table output
      • データベースへの書き込み
      • テーブルの入れ替えと追加だけ出来、変更は出来ない
    • 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ベースのPentahoの意味が無いとの批判も、、、
    • Execute SQL script
      • 入力を元にSQLを実行
      • 入力をWhere句の条件に入れてDeleteする場合に使ったりします
  • ルックアップ
    • Stream lookup
      • フィールドの値が同じ場合に「ステップ名」のフィールドを取得
    • Database lookup
      • 入力を元にデータベースに問い合わせてフィールドを取得
      • 毎回データベースに問い合わせるのでパフォーマンスが悪い。 大量のデータを処理するなら別に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)
      • いわゆるサブルーチンの呼び出し(Transformation)
    • Mapping input step
      • サブルーチンでの入力取得
    • Mapping output step
      • サブルーチンでの出力

初めてのPentaho Data Integration 3 Oracle DBからテキストファイルへの出力

Oracle DBからテキストファイルへの出力方法を説明します。
  1. Oracle JDBCドライバを準備
  2. ドライバをPentahoインストレーションディレクトリのlibext¥JDBCへコピー
  3. Table inputをドラッグ
  4. ドラッグしたTable inputをダブルクリックして設定する
    1. データソースをクリックして接続に必要な情報を設定 
      • テスト接続を押して設定が正しいか確認出来ます
    2. SQLの選択を押し、DBを解析してテーブルを表示させます
    • 自分でSQLを入力する事も出来ます
  5. テーブルを選択する
  6. フィールド名をSQLに追加しますか?に「はい」を押し、全ての列名を入力させます
    • もちろん、「いいえ」を押し、SELECT *のままでも問題ありません
    • プレビューする事も出来ます
  7.  Text file outputをドラッグ
  8. Shiftを押しながらTable inputからText file outputまでドラッグして結合する
  9.  Text file outputをダブルクリックして設定する
    1.  「ファイル」タブのファイル名に出力ファイル名を入力する
    2. 「フィールド」タブの「フィールドの取得」を押すと入力ステップの全フィールドが入力される
    3.  フィールド」タブの「最小桁数にする」を押すと出力ファイルが最小になります
  10. 「ファイル→名前を付けて保存」で出来上がったファイルを保存
  11. 「Action→実行」で動作!

  12. 動画はこちら

2013年4月18日木曜日

初めてのPentaho Data Integration 2 テキストファイルからOracle DBへの取り込み

テキストファイルからOracle DBへの取り込みの方法を説明します。

  1. CSV file inputをドラッグ
  2. ドラッグしたCSV file inputをダブルクリックして設定する
    1. ファイル名を入力する
      • C:\Program Files\Pentaho\data-integration-4.4.0\samples\transformations\files\sales_data.csv としてみます。
    2. 区切り文字を入力する
    3. 「フィールドを取得」を押しフィールドを自動設定する
      • データタイプ、書式、長さを読み取ったデータから 推定してくれます
      • プレビューすることも出来ます
      • 今回のデータにはASCII文字以外が含まれていることが見えます
  3. 不要な列を削除する為にSelect valuesをドラッグ
  4. Shiftを押しながらCSV file inputからSelect valuesまでドラッグして結合する
  5. Select Valueをダブルクリックして設定する
    • 削除フィールドでPRODUCTCODE, ADDRESSLINE1, CONTACTFIRSTNAMEを選択する
    • 選択フィールド : 残すフィールドを選択
      • フィールド名を変更する事も出来る。
      • 「フィールドの選択」を押すと入力ステップの全フィールドが入力される
    • 除去フィールド :除去するフィールドを選択
      • 「フィールドの除去」 を押すと入力ステップの全フィールドが入力される
    • メタ情報  : データタイプやフィールド名を変更
      • 「フィールドの変更」 を押すと入力ステップの全フィールドが入力される
  6.  Table outputをドラッグ
  7. Shiftを押しながらSelect valuesからTable outputまでドラッグして結合する
  8. Table outputをダブルクリックして設定する
    1. 「全般」タブの開始時にテーブル内容を削除する」にチェックを入れる
    2. データソースをクリックして接続に必要な情報を設定
      • テスト接続を押して設定が正しいか確認出来ます  
    3.  出力先のテーブル名を「全般」タブのテーブル名に入力
    4.  「全般」タブのSQL→実行を押し、テーブルを作成
      • テーブルが無ければ作成するSQLが自動的に作成される
      • テーブルがあれば、入力フィールドと一致しない部分を修正するSQLが作成される
    5. 「列名」タブのフィールドマッピングを押す
    6.  自動を押し入力フィールドとデータベース列名を対応させます
  9. 「ファイル→名前を付けて保存」で出来上がったファイルを保存
  10. 「Action→実行」で動作!

動画はこちら