Pentaho(ペンタホ)のETLツール、Kettle(ケトル)のPan(パン)には、Row Normaliser(行正規化)というトランスフォーメーションのステップがあります。本日、使い方を理解できたので、ここに記録しておきたいと思います。
参考:http://wiki.pentaho.com/display/EAI/Row+Normalizer
Row Normalizer(行正規化)とは
Row Normaliserは、複数列に納まっているデータを1列にまとめるステップです。非正規化な状態のデータを正規化します。
例えば、次のようなイメージのDBテーブルとデータがあったとします。
Month | Product_A | Product_B | Product_C |
2013/4 | 10 | 5 | 17 |
2013/5 | 12 | 7 | 19 |
… | … | … | … |
月別/品目別の売上個数を管理しているテーブルのイメージなのですが、これをRow Normaliserを使用して、次のような感じに変換する事ができます。
Month | Product | Sales |
2013/4 | 品目A | 10 |
2013/4 |
品目B | 5 |
2013/4 |
品目C | 17 |
2013/5 |
品目A | 12 |
2013/5 |
品目B | 7 |
2013/5 |
品目C | 19 |
… |
… | … |
Row Normaliserの使い方
データグリッドステップで、先の例と同じデータを作成します。
- ステップ名…ステップの名称を入力します。
- フィールド名(タイプ)…正規化して作成するカラム名(フィールド名)を入力します。
【フィールド】
- フィールド名…正規化する前のデータの正規化したいデータのカラム名(フィールド名)を設定します。"フィールド取得"ボタンを押すと自動的に設定されます。
- データタイプ…"フィールド名"を値としてデータ化しますので、データ化してフィールドに入力したい値を設定します。
- フィールド名(新規)…正規化する前のデータで、正規化したいカラム(フィールド)に入力されているデータを格納する新たなカラム(フィールド)を指定します。
次のような結果になります。
Row Normaliserの使い方の例
次のような正規化されていない品目の売上数量と売上金額が入っているデータがあったとします。
Row Normaliserに下記のような設定をします。
次のような結果になります。