IICS(CDI) Mapping Designer入門 〜Sorter(ソーター)編〜

2020.12.06

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

はじめに

データアナリティクス事業本部のkobayashiです。

Informatica Intelligent Cloud Services(以降、IICS)はオンプレミスおよびクラウド環境に置かれているデータサービスとアプリケーションサービスを統合するiPaaS(integration Platform as a Service)製品です。

IICSの機能の一つであるInformatica Cloud Data Integration(以降、CDI)ではクラウドやオンプレミスに存在する大量のデータをシームレスに統合します。 CDIではインフォマティカで用意してあるドライバを使うことで様々なデータソースから様々なターゲットにデータを統合することができます。

今回はトランスフォーメーションの一つである「ソーター」をマッピングに組み込んでみます。

ソータートランスフォーメーションの概要

ソーターはその名の通り、指定された並べ替えの条件でデータを並べ替える変換です。 ソートに関してはソースステップでデータを読み込むときにもクエリオプションとしてソートを指定できます。

その違いとしてはCDIではデータを取得したあとに様々な変換を行います。その過程でソートが必要になった場合やより細かいソート条件でソートする場合にソータートランスフォーメーションを使うことになります。

また、ソーターを使いデータをソートしてからアグリゲータートランスフォーメーションやルックアップトランスフォーメーションに遷移することで変換のパフォーマンスが向上するため、この目的でソーターを使うこともあります。

ソートをマッピングに組み込む

基本となるマッピング

今回行うのはRedshiftにあるusers_dataテーブルをデータソースとして、同じくRedshiftにあるusers_sortedテーブルにデータを移行するマッピングになります。

users_dataテーブルとusers_sortedテーブルは同じカラムを持つテーブルで、users_dataの中身は以下の様なデータになっています。

id name name_kana age blood birth_day phone email zip
1 長岡 次雄 Nagaoka Tsugio 50 A 1970-08-13 089-044-3372 fjgnfcrrrzb=ktsugio8522@hecs.fmmfc.al 791-2134
2 石垣 真紀 Ishigaki Maki 52 A 1968-11-02 0294-69-2328 Maki_Ishigaki@rcnzjbob.apld.iyl 307-0046
3 稲村 孝次 Inamura Kouji 45 B 1975-02-10 0996-19-2723 kouji31797@bdgncjvkmb.moho.kz 891-0502
4 徳永 玲二 Tokunaga Reiji 31 AB 1989-10-01 08512-7-2839 reiji482@fuwccya.uzm 690-0835
5 大嶋 善一 Ooshima Zenichi 21 O 1999-07-10 0857-40-1948 Zenichi_Ooshima@lhfnasy.vu 682-0723

ソーターの組み込み

ソーターを左メニューからドラッグ&ドロップして、ソースとターゲットの間に配置します。

ソーターステップを選択するとソーターのプロパティが設定できますので細かく見ていきます。 「全般」「受信フィールド」は他のステップと共通なので割愛します。

ソートプロパティ

ソートプロパティではソートの条件を設定します。

ソートには以下の2種類があります。

  • パラメータを使用しません : フィールドを並べ替え条件として指定し、昇順または降順で並べ替えるように各並べ替えフィールドを設定する
  • パラメータを使用します : マッピングタスクを構成するときに、ソート条件のパラメーターを使用して、パラメーターの値を定義する

今回はパラメータを伴うマッピングタスクを使わないのでパラメータを使用しませんを選択します。この選択を行うとソート条件が設定できます。並べ替えは以下の条件を設定します。

詳細プロパティ

詳細プロパティでソートの細かい条件を設定します。

項目の説明と今回の設定は以下です。

  • トレースレベル : ログに記録されるログレベル。ソーターが原因でエラーが発生する場合の調査に使う。
    • デフォルト(標準)のまま
  • ソーターキャッシュサイズ : ソート操作を実行するために必要なメモリの最大量。少なくとも16MBの物理メモリを割り当てる必要がある。
    • デフォルト(自動)のまま
  • 大文字と小文字を区別 : ソートを行う際に大文字と小文字を区別の有無。有効にすると、大文字 -> 小文字の順序で並び替える。
    • デフォルト(チェック)のまま
  • 作業ディレクトリ : ソート用一時ファイルの作業ディレクトリ。
    • Hosted Agentで事項するのでデフォルト(TempDirシステムパラメータ)のまま
  • 個別 : 出力行を別個のものとして扱うか否か。
    • デフォルト(未チェック)のまま
  • NULLを低位として処理 : null値を最低位として扱うか否か。降順指定だと並べ替えフィールドにnull値が含まれる行が最後になる。
    • デフォルト(未チェック)のまま
  • トランスフォーメーション範囲 : ソーターのロジックを受信データに適用する範囲。
    • デフォルト(すべての入力)のまま
  • オプション : ソーターがオプションか否か。
    • デフォルト(チェック)のまま

この設定でマッピングを実行します。

users_sortedテーブルを確認すると設定したソート順に並べ替えられていることがわかります。

id name name_kana age blood birth_day phone email zip
13 滋賀 武裕 Shiga Takehiro 59 O 1960-11-22 019-737-0377 iamncftotojijltakehiro915@hanpk.xwg 029-4201
63 熊谷 雛子 Kumagaya Hinako 59 B 1960-11-30 058-3-8256 Hinako_Kumagaya@npzaiquyub.sjw.mrw 500-8831
30 三田 桜 Mita Sakura 59 O 1960-12-08 011-580-2580 sakura1977@vtpzlhiwov.oq 071-1225
170 飯野 文 Iino Aya 59 O 1961-01-05 028-823-5804 Aya_Iino@bncaczt.mzk 321-1263
496 山内 心音 Yamauchi Kokone 59 A 1961-03-01 098-835-1774 kokone1613@qgoikmpzi.skw 901-3701
133 渡邊 蒼太 Watanabe Souta 59 AB 1961-04-19 0983-48-5060 souta4758@xahj.xx.cut 881-1231
443 谷内 沙和 Taniuchi Sawa 59 AB 1961-07-13 03-3507-9555 sawa17050@bqdef.wopbc.jk 106-0031

他のトランスフォーメーションとの組み合わせ

「ソータートランスフォーメーションの概要」で書いたようにソーターを使う場面としてアグリゲーターやルックアップのトランスフォーメーションのパフォーマンスを改善するために使えます。

アグリゲータ自体は以下の記事で解説されていますのでご確認ください。

下図のように集計したいグループのフィールドとソーターのフィールドを合わせることでマッピングのパフォーマンスが上がります。

まとめ

CDIのトランスフォーメーションの一つであるソーターをマッピングに組み込んで実行しました。おおよそ想像通りの挙動ですが、アグリゲーターなどの他のトランスフォーメーションのパフォーマンス改善に使えるのでそれらのトランスフォーメーションと組み合わせることで使う場面が多いかと思います。

最後まで読んで頂いてありがとうございました。