M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Pentahoでジョブ内のデータ変換にパラメータを渡し行に直す

今回はPentaho Data Integration(Kettle)のジョブ(Job)内で実行しているデータ変換(Transformation)に対してパラメータを渡し、データ変換内で行(Row)に直して利用する方法についてのメモ。

前々回の記事で触れたとおり「パラメータ」と「変数」は同義です。鈍い人間なのでこの点を理解するのに時間がかかり、ジョブ→データ変換へとパラメータを渡し、それを行に直して(つまりストリーム化して)利用する方法も試行錯誤の末にやっと見つけられました。

データ変換の構成

まずはデータ変換をつくります。データ変換を新規作成してから、メニューの[編集]→[設定]で「データ変換のプロパティ」画面を開きます。

[パラメーター]タブでこのデータ変換が受け取るパラメータの名前とデフォルト値を設定します。

▼パラメータのデフォルト値の設定
f:id:m12i:20150628003234p:plain

そして、そのパラメータを使って処理を行うステップを配置していきます。今回はあくまでも実験なので、受け取ったパラメータを行に直したら、それをすぐさまテキストファイルに書き出しているだけです。実際の業務ではこの行をつかって3つ前の回の記事で取り上げた「メール」ステップなどの各種設定を行うことになります。

データ変換は以下のステップから構成されます:

  • パラメータ(変数)のKey・Valueのペアを行に変換する「変数取得」ステップ
  • その変換結果をテキストファイルに書き出す「テキストファイル出力」ステップ

▼データ変換の構成
f:id:m12i:20150628004117p:plain

「変数取得」ステップでは、このデータ変換を実行する際に設定されるパラメータの値を読み込み、そのKey・Valueのペアを行に変換します。下図の[フィールド]欄の[変数名]列と[フィールド]列とで、パラメータ名(変数名)とフィールドをマッピングします。前々回記事で述べたとおりパラメータのValueは型を持ちませんがフィールドは型を持ちます。[タイプ]列でこの型を指定します。

▼「変数取得」ステップの設定
f:id:m12i:20150628004201p:plain

繰り返しになりますが、今回はあくまでも実験目的なのでパラメータをもとに生成した行データはそのままテキストファイルに書き出すだけです。

▼「テキストファイル出力」ステップ
f:id:m12i:20150628004738p:plain

ジョブの構成

次に今しがた定義したデータ変換を呼び出すジョブをつくります。実験目的のためただデータ変換を実行するだけの面白みのないジョブです。

▼ジョブの構成
f:id:m12i:20150628005046p:plain

重要な点は、データ変換をダブルクリックすると表示される「この変換ジョブの明細」画面の[パラメータ]タブで、先ほどデータ変換を定義したときに設定したパラメータに対して値を設定していることです。画面右側の[Get parameters]ボタンをクリックすると[パラメータ]列にパラメータ名が自動で入力されます。あとは[値]列で実際に渡す値を指定します。

▼「データ変換」ジョブ・エントリーの設定
f:id:m12i:20150628005228p:plain
f:id:m12i:20150628005323p:plain

ジョブの実行

以上の設定が終わったところでジョブを実行すると、ジョブ→データ変換へとパラメータが渡され、それが行に直されたあとテキストファイルとして出力されます。ジョブから渡された値によりデフォルト値が上書きされていることがわかります:

tranParam1;tranParam2
こんにちは、みなさん; 5678

さて、ところで先ほどの「この変換ジョブの明細」画面には[フィールド名]という列も存在しているのが気になるのですが、今のところ使い方がわかりません・・・。ともかく、今回はここまで。

m12i.hatenablog.com
m12i.hatenablog.com