IICS(CDI) Mapping Designer入門 〜Sorter(ソーター)編〜
はじめに
データアナリティクス事業本部の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 | 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 | 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のトランスフォーメーションの一つであるソーターをマッピングに組み込んで実行しました。おおよそ想像通りの挙動ですが、アグリゲーターなどの他のトランスフォーメーションのパフォーマンス改善に使えるのでそれらのトランスフォーメーションと組み合わせることで使う場面が多いかと思います。
最後まで読んで頂いてありがとうございました。