IICS(CDI) Mapping Designer入門 〜Rank(ランク)編〜

2020.12.07

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

はじめに

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

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

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

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

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

ランクはその名の通り、指定されたカラムを基準に上位もしくは下位のデータを抽出する変換です。 また、カラムを複数指定したグループ内の上位、下位のデータも取得できます。 ランク行数の指定により、上位(下位)10件のみ取得といった形で後続のステップに渡すレコード数を絞り込むことができます。

ランクをマッピングに組み込む

基本となるマッピング

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

users_dataテーブル以下の様なデータになっています。

id name age blood pref birth_place
1 長岡 次雄 50 A 愛媛県 長崎県
2 石垣 真紀 52 A 茨城県 北海道
3 稲村 孝次 45 B 鹿児島県 埼玉県
4 徳永 玲二 31 AB 島根県 石川県
5 大嶋 善一 21 O 鳥取県 沖縄県

users_rankテーブルはusers_dataにrankカラムを付けた以下の様なテーブルになります。

rank id name age blood pref birth_place
1 170 飯野 文 59 O 栃木県 新潟県
2 329 大竹 杏奈 51 O 栃木県 滋賀県
3 468 黒木 恭一 44 A 栃木県 岐阜県
3 494 久保田 一花 44 A 栃木県 広島県
5 365 我妻 徳子 39 A 栃木県 奈良県
6 98 飯野 未来 26 AB 栃木県 大阪府
7 473 北村 志穏 23 O 栃木県 神奈川県

ランクの組み込み

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

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

ランクプロパティ

ランクプロパティではランクの条件を設定します。

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

  • ランク基準 : ランクの基準となるフィールド。
    • ageを設定します。
  • ランク順序 : ランクする順序を上(ACS)、下(DESC)で設定。
    • 上を設定します。
  • 行数
    • 行数のパラメータ化 : パラメータを使用して行数を指定するか否か。動的に行数を指定する場合はパラメータを使用する。
      • パラメータを使用しませんを選択します。
    • 行数 : 各ランクグループに含める行数。10だと各グループ
      • 5を入力します。

グループ化プロパティ

ランクプロパティではランクの条件を設定します。

グループ化したいカラムを追加します。 今回の例ですと、「pref(都道府県)」と「blood(血液型)」でグループ化しその中で「age(年齢)」でランク付けしています。

詳細プロパティ

詳細プロパティでランクの細かい条件を設定します。

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

  • キャッシュディレクトリ : データキャッシュファイルとインデックスキャッシュファイルを作成するディレクトリ。
    • デフォルト($PMCacheDir)のまま
  • ランクのデータキャッシュサイズ : ランク操作を実行するために必要なメモリの最大量。
    • デフォルト(自動)のまま
  • トレースレベル : ログに記録されるログレベル。ランクが原因でエラーが発生する場合の調査に使う。
    • デフォルト(標準)のまま
  • トランスフォーメーション範囲 : ランクのロジックを受信データに適用する範囲。
    • デフォルト(すべての入力)のまま
  • 大文字小文字を区別した文字列比較 : ランクを行う際に大文字と小文字を区別の有無。有効にすると、大文字 -> 小文字の順序で判定される。
    • デフォルト(チェック)のまま
  • オプション : ランクがオプションか否か。
    • デフォルト(チェック)のまま

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

users_rankテーブルを確認すると設定した通り、「pref(都道府県)」と「blood(血液型)」でグループ化しその中で「age(年齢)」で各グループ上位5件のランクデータになっていることが確認できます。

rank id name age blood pref birth_place
1 256 桑田 幸司 51 A 三重県 愛媛県
2 368 北田 正吉 48 A 三重県 長崎県
3 56 小山 瑞紀 42 A 三重県 岩手県
4 136 矢崎 瑠菜 40 A 三重県 京都府
4 105 江原 徳蔵 40 A 三重県 新潟県
1 341 村瀬 春香 52 AB 三重県 山口県
1 343 赤木 真希 58 O 三重県 奈良県
2 391 滝口 琉那 51 O 三重県 佐賀県
3 199 森岡 義昭 36 O 三重県 石川県
1 42 岩本 智之 58 A 京都府 山形県

まとめ

CDIのトランスフォーメーションの一つであるランクをマッピングに組み込んで実行しました。特に難しい操作や設定はなく直感的に設定が行なえますので、ランク付けが必要な場合はランクトランスフォーメーションを使ってみましょう。

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