IICS CDI Mapping Designer入門 〜Normalizer(ノーマライザ)編〜

Informatica Cloud Data IntegraionのMappingで使用できるパーツ「Normalizer」についてご紹介します。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも!DA部の春田です。

Informatica Cloud Data Integrationでデータ変換処理を構築するためのインターフェイス"Mapping"には、データの変換処理を簡単に実装するための様々なパーツが用意されています。今回はデータ変換の中でも特徴的なパーツ、Normalizerについてご紹介していきます!

Normalizerでは何ができるのか?

Normalizerは、複数のカラムをユニークキーで付与しながら1つのカラムのデータとしてまとめること(正規化)ができる機能です。例えば、一つのStoreで四半期の売上が別カラムになっているテーブルを

StoreNo Q1 Q2 Q3 Q4 Year
1001 30 50 48 80 2014
1022 100 120 125 140 2014
1190 80 108 123 134 2014

このように1カラムにまとめることができます。データの前処理で重宝するパーツですね。

StoreNo QuarterlySales
1001 30
1001 50
1001 48
1001 80
1022 100
1022 120
1022 125
1022 140
1190 80
1190 108
1190 123
1190 134

さて、実際に使っていきましょうか!

事前準備

IICSおよび、Secure Agentの環境は構築できているとします。初めての方は、以下のエントリをご参照ください。

今回も、Redshiftのサンプルデータを拝借します。tickitdb.zipをダウンロードし、解凍したデータをSecure Agent内に配置してください。

クリックでtickitdb.zipをダウンロード

IICSからFlat Fileとして読み取るコネクションを作成します。

これで事前準備はOKです。

実際に使ってみた!

まずは左メニューバーの「New」をクリックして、Mappingを新規作成します。

Mappingデザイナーの画面が表示されたら、Sourceの設定を行います。Objectsales_tab.txtを選択し、以下のようにFormatting Optionsを設定してください。

サンプルデータにはヘッダがないので、カラム名はFieldsタブから手入力してください。ついでにデータ型もいい感じに合わせておきましょう。

Sourceの設定が終わったら、デザイナー左のパレットからNormalizerを選択し、SourceとTargetの間へドラッグ&ドロップします。

Normalizerの主要タブは2つ、Normalized FieldsField Mappingです。Normalized Fieldsでは期待する出力のカラムを定義し、Field Mappingでは入力カラムと出力カラムを紐付けます。

今回は試しに、idと名のつくカラムを全部まとめてみましょう(実際にはほとんどやらない変換だとはおもいますが)。Normalized Fieldsタブをクリックし、右上のCreate FieldからSelect From Incoming Fields...をクリックしてください。

まずは正規化を行わないカラムの情報をそのまま引き継がせます。commissionsaletimeのみを選択し、OKをクリックします。

続いて、正規化を行った後のカラムを作成するために、Create FieldからNew Fieldをクリックしてください。

正規化後のカラム名はIdsとでもしておきます。Normalizerでは、Typeはstringnumberの2種類しか選べない点にご注意ください。

Idsが追加されたらOccursを修正します。Occursとは、正規化対象となるカラムの数を指します。今回はid系のカラム計8つを正規化するので、Occursは8です。

Occursが2以上になると、自動的に新しく2つのカラムが追加されます。

GCID_Idsは正規化前の元々のカラムと紐づけられて割り振られるIDで、一方GK-Idsは1レコードずつ順番に付与されるIDです。先ほどの例で言うと、こんな値が割り振られます。地味にありがたい機能です。

StoreNo QuarterlySales GCID_Ids GK-Ids
1001 30 1 1
1001 50 2 2
1001 48 3 3
1001 80 4 4
1022 100 1 5
1022 120 2 6
1022 125 3 7
1022 140 4 8
1190 80 1 9
1190 108 2 10
1190 123 3 11
1190 134 4 12

さて、正規化前後のカラム情報をマッピングしていきましょう。Field Mappingのタブをクリックすると、以下の2つのテーブルが表示されます。カラムのマッチングを行うには、右上のAutoMatchをクリックするのですが、マッチングの方法としてExact Field NameSmart Matchの2種類があります。

  • Exact Field Name: 正規化前と後のテーブルで、同じ名前のカラムを自動的に紐付ける。
  • Smart Match: 同じ接頭辞などのカラムを自動的に紐付ける。

今回は、commissionとsaletimeはExact Field Nameで紐付けられます。SmartMatchの方はダメでした。この辺り自動でやりたい場合は、カラム名を調節しておく必要がありますね。Exact Field Nameをクリックすると、以下のように紐付けられます。

残りは、左テーブルのカラムを正規化先の右テーブルのカラムへドラッグ&ドロップしましょう。

こんな感じに1対1に紐づけたら、Previewで中身を確認してみましょう。

期待通りの結果になりましたね。NormalizerのAdvancedタブにはほとんどオプションがないので、使い道としてはこれくらいです。

最後に

Normalizerはシンプルながらも、データの前処理段階で活躍してくれそうな機能ですね!ETL実装時にはぜひチェックしておきましょう。

Developers.IOではその他の機能についても丁寧にご紹介していきたいとおもいますので、乞うご期待ください!