Informatica Cloud Data Integrationの最重要ETL機能「Mapping」のチュートリアルをやってみた

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

本ブログでは次世代のETLプラットフォーム、Informatica Intelligent Cloud Services(以降、IICS)のチュートリアルを進めていきます。いざ、マッピング実装!

マッピングチュートリアルの流れ

Mapping tutorial

今回のチュートリアルの流れです。なじみのない単語があるかと思いますが、このチュートリアルを進めていけば大まかに把握できるかと思います。

  1. マッピング(ETL処理のフレームワーク)を作成する
  2. データソース(ETL処理の"E")を設定する
  3. Filter(ETL処理の"T")を作成する
  4. ターゲット(ETL処理の"L")を設定する
  5. 作成したマッピングにエラーがないか確認
  6. 作成したマッピングをもとにタスクを作成する

事前準備として、Informatica Cloud Data Integrationの環境をAWS上で構築してみた | Developers.IOを参考にIICSの環境をご用意ください。また、サンプルデータをSample Source File for the Mapping Tutorialから取得し、zipファイルを解凍してEC2インスタンスの~/sa_sample/配下に配置しておきます。チュートリアルを進めていくプロジェクト配下に、Mappingsというフォルダも作成しておいてください。

マッピング(ETL処理のフレームワーク)を作成する

まず初めに、IICSで新規のマッピングを作成します。Data Integration画面の左メニューからNewをクリックし、MappingsMappingを選択して作成します。

以下のようなマッピングデザイナーの画面が表示されるはずです。

作成したマッピングのプロパティ名は、チュートリアルになぞってm_Accounts_by_Stateとでもしておきましょう。Locationは、先ほど作成したプロジェクト配下のフォルダcm-haruta\Mappingsを指定します。

マッピングの枠組みの構築はこれで完了です。データの変換処理を定義していくには、デザイナーの左端にあるアイコンをいじればいいことが何となく察せられます。

データソース(ETL処理の"E")を設定する

次に、作成したマッピング上でデータソースを設定します。一番左端にあるコレです。

デザイナー上でSourceをクリックすると、下に各種プロパティの設定画面が表示されます。とりあえずソース名はsrc_FF_Accountと書いておきましょう。

Sourceのタブで具体的な設定を行っていきます。Connectionは環境構築のチュートリアル時に作成したコネクションを選択できます。環境構築時はcm-harutaという~/sa_sample/をターゲティングしているコネクションを作成したので、こちらを選択します。Source Typeは、現在はSingle ObjectFile ListCommandParameterの4つから選択できます。各種説明は、下に箇条書きでまとめておきます。

  • Single Object
    • CSVやJSONなどの単体ファイル
  • File List
    • 複数のファイルへのパスを記載したテキストファイル
    • 記述方法は結構細かめなので、今回は割愛します
    • 参照: File lists
  • Command
    • File Listを動的に作成するためのシェルスクリプトなど
  • Parameter
    • IICS上で作成できるKey-Value型の変数

今回はSingle Objectを選択します。その後、Objectの項目でSelect...をクリックすると、IICSがコネクションの先、この場合~/sa_sample/配下のデータファイルをブラウズしてくれます。Account.csvを選択してOKをクリックした後、Preview Dataをクリックすればデータの中身を確認することができます。

最後に、デザイナー右上のSaveをクリックして保存しましょう。これでデータソースの設定は完了です。

ちなみに、Fieldsのタブをクリックすれば、IICSが自動で解析したデータのメタ情報を閲覧することができます。

Filter(ETL処理の"T")を作成する

続いてETL処理のメインディッシュ、データの変換処理をデザイナー上で定義していきます。本チュートリアルでは、Filterと呼ばれるパーツを使ってデータを変換し、ターゲットへ流していきます。FilterはSQLでいうWHEREと同じような働きをします。

Filterはデザイナー左の変換パレットの中にあります。これをドラッグして、SourceとTargetの間にドロップしましょう。

接続したFilterをクリックすると、Sourceの時と同じように下にプロパティの設定フォームが表示されます。Nameはflt_Filter_by_Stateにしておきます。名前の通り、このFilterではデータ内のStateを指定した絞り込みを行っていきます。

左タブの中からFilterをクリックし、Filter ConditionでSimpleを選択します。右端にある+マークをクリックすると、Filter Conditionsの表に新規の行が追加されます。

Field Nameは今回の絞り込み対象のState、Operatorには= (Equals)を選択し、ValueではNew Parameterを選択して絞り込み用のパラメータを作成していきます。パラメータの設定項目は以下とします。

  • Name
    • p_FilterConditionValue
  • Display Label
    • Filter Value for State
  • Description
    • Enter the two-character state name for the data you want to use.
  • Type
    • string(で自動設定されているはず)
  • Default Value
    • MD

Default ValueでMDを設定しておけば、パラメータを何も指定しなかった場合はState = MDで絞り込みが行われます。OKをクリックしてポップアップを閉じ、一旦Saveしておきます。Filterの設定はこれでOKです。

ターゲット(ETL処理の"L")を設定する

Mappingの最後に、データの出力の設定を行っていきます。デザイナー上でTargetをクリックし、プロパティ設定画面を表示させましょう。Nameはtgt_Accounts_by_Stateにします。

続いて左タブのTargetをクリックし、ConnectionをSourceと同様cm-haruta、Target TypeをParameterを選択します。この設定では、Sourceと同じEC2インスタンスのディレクトリに変換後のデータが出力されるわけですが、Target TypeをParameterにすることで、そのパラメータごとに分割してファイルを出力できるようになります。

New Parameterをクリックし、Nameにp_StateTargetParameter、Display LabelにAccounts for Stateを設定してください。

続いてField Mappingのタブをクリックし、Field map optionsでAutomaticを選択します。左のIncoming Fieldsにはデータのメタ情報が記載されていますが、右のTarget Fieldsには何も表示されていません。これは、先ほどTarget TypeをParameterにしたため、出力されるFieldsはタスク実行時に都度決定されるためです。

これでターゲットの設定は完了です。

作成したマッピングにエラーがないか確認

画面にValidが表示されているのが確認できたら、Runをクリックしてマッピングを実行してみましょう。

実行ウィザードが表示されます。Runtime EnvironmentをSecure Agentが起動しているEC2インスタンスに指定して、Next >をクリックします。

続いて、出力設定の画面が表示されます。データソースのACCOUNT.csvを上書きすることもできますが、今回はCreate Targetをクリックして新しい出力ファイルを指定していきます。

ポップアップが表示されたら、ObjectをAccounts_By_State_TXとして、OKを押してください。これが変換後データの出力ファイル名になります。

Next >をクリックすると、最後にパラメータの入力画面が表示されます。デフォルトのMDTXに書き換えてください。Runをクリックするとジョブが起動します。

ジョブが正常に起動されると下のようなInfoが表示されるので、My jobsをクリックしてジョブ一覧の画面に飛んでください。一番左ナビゲーションバーのMy jobsからでも可能です。

ジョブ一覧画面の一番上が最新の実行です。ひとまずSuccessとなっているので、ジョブは成功したみたいですね。こちらをクリックすると、実行結果の詳細画面が表示されます。

EC2インスタンスの~/sa_sample/Accounts_By_State_TXに出力されたデータが以下の通りです。State = TXのレコードのみ抽出されていますね。

"ID","NAME","STREET","CITY","STATE","ZIPCODE","ANNUAL_REVENUE"
"12345","United Oil & Gas - Texas","17th Avenue","South City","TX","52330","3400000"
"23422","Edge Communications","312 Constitution Place^M","Austin","TX","34933","139000000"
"59993","Pyramid Construction Inc.","2 Place Jussieu","Paris","TX","75251","950000000"

これでマッピングの作成は完了です。

作成したマッピングをもとにタスクを作成する

さて、マッピングはあくまでプログラミング言語で言う関数のようなものなので、これだけは運用していくことができません。マッピングを制御するMapping Taskを作成していきます。先ほどのマッピングの画面で、右上にある三点をクリックし、New Mapping Taskをクリックします。

マッピングタスクの設定画面が表示されます。Task Nameはmt_Accounts_by_State_task、Runtime EnvironmentはEC2インスタンスを選択してください。Next >をクリックします。

ターゲットの設定画面とパラメータ入力が表示されます。先ほどのテストと同じように設定してもらえればOKです。

最後に表示されるScheduleが、マッピングタスクの主機能といっていいでしょう。ここではスケジュール実行やメール通知、マッピングタスク実行前後のコマンド実行、あらかじめ作成したパラメータファイルからの入力設定など、運用を楽にしてくれる様々な機能を設定することができます。今回は何もいじらず、そのまま完了させましょう。

最終的に、以下のようなマッピングタスクが作成できました。右上のRunをクリックすれば、一発でマッピングを実行することができます。

チュートリアルは以上です!

次のステップ

IICSで実現できるETL処理の概要はお分かりいただけたでしょうか?今回はFilterのみ用いたデータ変換処理でしたが、IICSはまだまだ多くのマッピングツールを保持しています。

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