はじめに
初めてPentaho DI 触ってみて、その勢いでこの記事を書いています。
ド素人なので用語とか色々間違っているかもしれません。
環境
- iMac (Retina 5K, 27-inch, 2017)
- macOS High Sierra
Java のインストール
ここからJavaをインストールします。
Note:
Java10では動作しないみたいなので、8をインストールしました
Pentaho DI のインストール
ここのPentaho Community Edition 8.0
> Data Integraton
> All OS
からZipファイルをダウンロードします。
Zipファイルのダウンロードができたら好きなところに展開します。
Pentaho DI の起動
展開したディレクトリに移動してSpoon
を起動します。
$ cd deta-integration
$ ./spoon.sh
こんなのが立ち上がります。
Note:
起動にはしばらく時間がかかります
Data Integration
実際にDIしてみます。
最近、ネ申Excelぽいのと戦ったので、それに似た要件でやってみます。
-
入力1
- IPアドレスとその利用者名の対のリスト
- CSV形式
- IPアドレスはオクテットごとに区切られている(ネ申Excel)
- 表にすると以下のような感じ
1st_octet 2nd_octet 3rd_octet 4th_octet user_name 10 0 0 1 ikegami 10 0 0 2 obata 10 0 0 3 sakagami -
入力2
- IPアドレスとそのアドレスが割り当てられている機器の情報の対のリスト
- CSV形式
- 表にすると以下のような感じ
ip_address info 10.0.0.1 aaa 10.0.0.2 bbb
この入力から、以下の出力を作ってみます。
-
出力
- IPアドレスをキーに入力1と入力2を結合させたリスト
- 表にすると以下のような感じ
ip_address info user_name 10.0.0.1 aaa ikegami 10.0.0.2 bbb obata 10.0.0.3 sakagami
入力ファイルのセット:E
フィールド結合:T
つぎに、入力1のオクテットごとに区切られたIPアドレスを1つに結合させます。
-
変換
>フィールド結合
を右のワークスペース的なところにドラッグ&ドロップします。 -
フィールド結合
のアイコンにカーソルを当てて、左下の入力コネクタ
を選択します。
-
入力コネクタ
をinput1
のアイコンに接続させて、ステップのメインインプット
を選択します。
-
フィールド結合
のアイコンをダブルクリックして結合方法を記入します。 - ここまでで、こんな状態になります。
マージ結合:T
つぎに、IPアドレスをキーに入力1と入力2を結合させます。
-
結合
>マージ結合
を右のワークスペース的なところにドラッグ&ドロップします。 -
マージ結合
の入力コネクタ
をinput1に接続させて、Left hand side stream of the join
を選択します。
-
input2に対しても同様にして、
Right hand side stream of the join
を選択します。 -
マージ結合
のアイコンをダブルクリックして結合方法を記入します。-
結合タイプ
:結合タイプの指定(説明はめんどくさいので公式ドキュメントを引用) -
フィールド名
:結合のキーとするフィールドの名前
FULL OUTER:
all rows from both sources will be included in the result, with empty values for non-matching keys in both data streams
LEFT OUTER:
all rows from the first source will be in the result, with empty values for non-matching keys in the second data stream
RIGHT OUTER:
all rows from the second source will be in the result, with empty values for non-matching keys in the first data stream
INNER JOIN:
only rows having the same key in both sources will be included in the result -
テキストファイル出力:L
最後に、結合結果を出力します。
-
出力
>テキストファイル出力
を右のワークスペース的なところにドラッグ&ドロップします。 -
テキストファイル出力
の入力コネクタをマージ結合
に接続させます。 -
テキストファイル出力
のアイコンをダブルクリックして、出力方法を記入します。
Note:
フィールド
タブで出力するフィールドの選択や、フィールドの順序を設定できます
実行
左上の三角ボタンをクリックすると、上で定義したDIが走ります。
できたCSVファイルを確認してみます。
$ cat output.csv
10.0.0.1,ikegami,aaa
10.0.0.2,obata,bbb
10.0.0.3,sakagami,
できた!
コマンドラインからの実行
Pan
でコマンドラインからも実行できました。
-file=
の後ろにSpoon
で作成した.ktr
ファイルを指定して実行します。
$ ./pan.sh -file=qiita.ktr
参考
SpoonやらPanやらKitchenやら、それぞれの説明はここをみました。
【Pentaho Lab】トレーニング1日目(Kettle:ケトル)の復習
- Spoon(スプーン)…ETLをモデリングするGUIツール。Kettleの中心コンポーネント。
- Pan(パン)…SpoonでモデリングしたTransformationを実行するコマンドラインツール。
- Kitchen(キッチン)…SpoonでモデリングしたJobを実行するコマンドラインツール。
- Carte(カルテ)…Webサーバーとして動作し、リモート(サーバー側)でTransformationやJobを実行します。