IICS CDI Mapping Designer入門 〜Filter(フィルタ)とRouter(ルーター)編〜

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

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

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

Filter/Routerでは何ができるのか?

Filterは、入力されてきたデータを条件で絞り込むパーツです。SQLでいうWHERE句の簡易版と思ってもらって差し支えないです。一方のRouterは、入力されてきたデータを条件に基づいて複数のグループに振り分けて出力できるパーツです。こちらはデータの出力が1系統のSQLにはない、GUIのETLツールならではの機能ですね。

FilterやRouterは、等号、不等号、NULLのみしか条件付けできないため、このパーツだけでそこまで高度なことはできないです。文字通りの「フィルタリング」ができるシンプルなパーツと理解いただければ十分です。

事前準備

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の設定が終わったら、デザイナー左のパレットからFilterを選択し、SourceとTargetの間へドラッグ&ドロップします。

Filterでできることは少ないので、今回はsaletimeカラムで絞り込みをするのみです。2008年6月1日以降のデータのみ抽出します。注意点としては、そのまま6/01/2008 00:00:00と記入しても日付型とは見なしてくれないので、関数を使って明示的に型を指定する必要があります。今回の場合は、TO_DATE('6/01/2008 00:00:00', 'MM/DD/YYYY HH24:MI:SS')となります。

Previewでデータが確認できたらOKです。

Filterの挙動が確認できたところで、続いてRouterに切り替えます。Filterはデザイナーから削除しておき、左パレットからRouterを選択してドラッグ&ドロップします。

Routerによって出力が複数系統に分かれるので、Targetも追加しておきましょう。今回は2つに分けるので、1つだけ追加してください。

ルーティングの設定は、Output Groupsから行います。デフォルトではDEFAULT1というグループ名が存在しており、何もしなければそのままのデータが出力されるようになっています。ここにグループを2つ追加し、年の前期と後期で分けて出力させてみます。右側の+ボタンをクリックし、Configureから条件を入力します。

設定画面は先ほどのFilterと全く同じです。saletimeを不等号で前期・後期に分けましょう。

以下のように定義できたら、どのグループをどのTargetへ出力するかを指定しましょう。デザイナー上でRouterの右下に付いている+ボタンをクリックし、EARLYの矢印とLATEの矢印をそれぞれTarget、Target1へ引っ張ります。

RouterのPreviewをクリックして確認してみると、生成されたプルダウンのグループごとに中身を確認する事ができます。前期後期で分かれていればOKです。

FilterもRouterもAdvancedで設定できる機能はほとんどないです。もう少し高度なことがやりたい場合は、先ほどのTO_DATEのような関数やパラメータの作成などを組み合わせてETL処理を構築していきましょう!

最後に

Routerは条件に合わせて出力を何系統にも分けられるのが、かなり魅力的ですね。実際に扱ってみた感じ、出力が1系統だけの時もFilterよりもRouterを使用した方が、後々拡張する時に楽かなと思いました。

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