2013年5月14日火曜日

初めてのPentaho Data Integration 7 ファイルからのVariable読み込み

多数の変数を扱う場合、ShellやBatchで全部指定するのは使いにくいので設定ファイルを作って読み込む方が現実的でしょう。

例えばこのようなJobを組み込むと良いでしょう。
  • Job
    • Variableを設定
    • これらはBatch/Shellで上書き出来ます。

    • 変数を読み込むTransformationを指定
    • 相対パスで指定してみました。
  • Transformation



    • CVS Input
    • 区切り文字も指定出来るようにしてあります。
      文字コードは残念ながらハードコードです。
    • Filter
    • #で始まる行を無視します。 これでコメントを混ぜる事が出来ます。

    • Set Variable
    • Kye列をパラメータ名とし、Value列を値として設定します。

    • Write to Log
    • 設定された情報をLogに書き込むとエラーなどの場合に調査が出来ます。

  • Config
  • Key Value
    # This is configuration file.  The line starting with # shall be ignored.
    Country France
    
使用方法
区切り文字をタブでは無く、「;」に変更した場合あ以下の様に指定します。
  • Windowsの場合、
  • kitchen.bat -file:"C:\Temp\ETL\Job\SetVariables.kjb" -param:ConfigFieldDelimiter=";"

  • Linuxの場合、
  • sh kitchen.sh -file:"/home/somebody/ETL/Job/SetVariables.kjb" -param:ConfigFieldDelimiter=";"

初めてのPentaho Data Integration 6 Job

Jobはファイルを操作したり、エラー時にメールを送信したり、Transformationよりも大きな目的で使われます。また、TransformationはStepでデータが並列処理されるのに対し順々に処理される事が大きな違いです。
例えばこんな感じで使います。
処理は
  1. Set varialbesで変数を設定
  2. Transfromationでデータ処理
  3. Simple evaluationで条件分岐
  4. 条件に合わなければメールを送信
  5. 終了 
Set variables, Transformation, Mail too manyでエラーが起きればMail Alarmでメールが送信されます。

個人的に良く使うのは以下です。 詳細はSampleやCommunityを参照して下さい。
当然、扱うデータと目的に大きく依存しますので参考程度にしてください。
  • 全般
    • START : 当たり前です。 ここから処理が開始されます。
    • Job : 他のJobを呼ぶ
    • Set variables : 同じTransformationでvariableだけ変えて処理する時に使います。
    • Success :処理の最後に入れます。 入れなくても動くのですが理解しやすいように入れています。
    • Transformation :  そのまま。
  • メール
    • Mail : メール送信。
  • ファイル管理
    • Copy Files : ファイルコピー。 正規表現で複数ファイルをコピー出来ます。
    • Delete file : 1ファイルの削除
    • Delete files :  正規表現で複数ファイルを削除出来ます。
  • 条件
    • Simple evaluation : 変数や前のTransformationの結果で条件分岐
    • Wait for :  待ち。 エラーの後に1秒待って、再処理などで使います。
  • スクリプト
    • Shell :  Pentahoで出来ない処理をShellに任せます。
  • Untility
    • Write to Log :  ログを書き出します。
  • ファイル転送
    • Get a file with FTP : FTPでファイル取得。 
    • Put a file with FTP : そのままです。
大きなファイルをGet/Put FTPすると中断される場合を想定するとこんな感じのJobを使います。



2013年5月13日月曜日

初めてのPentaho Data Integration 5 パラメータ(Variable)

使いこなすと非常に便利なパラメータ(Variable)です。
ファイル名や検索条件など変更の為にプログラムを修正したくない場合に使います。
また相対パスを使ったファイルの指定にも使います。
CVS file inputのファイル名のように<$>マークが付いている場所、SQLを書くStep、Modified Java Script Value、Get Varialbesで使えます。

パラメータの設定は
  1. 編集 - 設定 で変換設定画面を出す
  2. パラメータタブで名前と値を設定
  3. そのままでは選択肢に現れず、使い勝手が悪いので一度、プレビューします。
  4. エラーが出ても気にしない、気にしない。
色々な指定が出来ます。
  1. <$>マークが付いている場所
    1. カーソールを持って行き、Control+スペースを押す
    2. 使用出来るパラメータがドロップダウンメニューで表示されます。
    3.  選択すると${}で囲まれたパラメータが表示されます。 手入力でもOKです。
      • 相対パスを使う場合、例えば以下のような構造でTranformationフォルダ内のTransformationからReportフォルダフォルダ内のfileを指定する場合はこんな感じで指定します。
      • ${Internal.Transformation.Filename.Directory}${file.separator}..${file.separator}..${file.separator}Report${file.separator}file
        
      • $[ASCIIコード]と手入力する事で特殊文字も入力出来ます。
  1. SQL
  2. 「Table Inputの場合、先行のステップから値を引き継ぐ」にチェックを入れないと参照されません。
  3. Modified Java Script Value
  4. 関数 - 特殊関数にあるgetVariableを使います。 1つ目の引数がパラメーター、2つ目は初期値です。
  5. Get Variables
  6. これは単純です。
変更方法は実行時にBatch, Shell Scriptで指定、Set Variables Stepで指定、Modified Java Script Valueで指定の3つです。
  1. 実行寺にBatch, Shell Scriptで指定
  2. Windowsの場合、
    pan.bat -file:"C:\temp\Variables.ktr" -param:COUNTRY="France"
    Linuxの場合、
    sh pan.sh -file:"/home/somebody/Variables.ktr" -param:COUNTRY="France"
  3. Set Variables Stepで設定
  4. フィールド名の値を変数名に設定します。 スコープとは影響範囲です。
    「Valid in the Java Virtual Machine」とするとJVMで共有されてしまいますので注意して下さい。
    設定した変数は同じStepでは使えず、次のStepやJobで使えるようになります。
  5. Modified Java Script Valueで設定
  6. 関数 - 特殊関数のsetVarialbesを使います。引数はフィールド名、変数、スコープの順です。
    設定した変数は同じStepでは使えず、次のStepやJobで使えるようになります。
覚えてしまえば非常に便利ですので使いこなして下さい。