本記事は、
ジャンルなしオンラインもくもく会 Advent Calendar 2022の
12日目の投稿です。
製品
・Informatica Intelligent Cloud Services(IICS)
のCloud Data Integration(CDI)
ライセンスはトライアルです。
IICSのトライアルはこちらから開始できます。
・Snowflake
こちらも無料トライアル版です
Snowflakeのトライアルはこちらから開始できます。
環境
InformaticaのSecure Agent
・プラットフォーム:Windows64
・バージョン:64.25
目標
CDI上で2つのテーブルを結合し、
データウェアハウスのSnowflakeにロードします。
素材
Azure DataLake Storage gen2のサンプルデータ
IICS内で用意されていたので、それを使用します。
テーブルその1
stageCuratedCustomerOrdersテーブル(10列)
中身は、顧客の注文情報のようです。
テーブルその2
stageCustomersテーブル(3列)
中身は、顧客情報のようです。
実行手順
1マッピングを作成
1-1.ソーストランスフォーメーション を設定
一番左端の2つのADLSgen2が2つのテーブルに対応しています。
1-2. ジョイナトランスフォーメーション を設定 (テーブル結合をする部分)
MasterとDetailの2つの対応づけ先があります。
どちらのテーブルをどちらに対応づけるか?
公式ドキュメントによると、
ジョブのパフォーマンスを高めるには、
小さいデータセットを表すトランスフォーメーションを
マスタグループに接続します。
そのため、顧客情報であるstageCustomersをMasterに対応付けしました。
続いて設定。
ジョイナトランスフォーメーション > 受信フィールド
2テーブルの間で、カラム名の重複がありますと怒られました。
なので、カラム名を変えてあげます。
どう変えるか。
stageCuratedCustomerOrdersテーブルの方のカラム名に
全て冒頭に"Orders_"を付加しました。
怒られなくなったので、
次に結合の方法を設定します。
ジョイナトランスフォーメーション > 結合条件
とりあえずノーマル&簡易にしましたが、
オプションは以下の通りです。
CustID(このカラムの中身は顧客ID)のカラム同士を結合します。
1-3.ターゲットトランスフォーメーション を設定
ターゲットトランスフォーメーション > ターゲット > オブジェクト
テーブルが新たに生成されるようにします。→実行時に新規作成
結合後のテーブル名は、JoinerTestTableとしました。
パスは、Snowflakeのデータベース名/スキーマ名 です。
Snowflake側の画面。このPUBLICスキーマの下にテーブルが生成される予定です。
これで完成です。
マッピングを実行
マッピングキャンバスから、マイジョブに遷移して実行結果を確認します。
成功したようです。326行が処理されました。
Snowflake側でもJoinerTestTableの生成が確認されました。
Snowflake側でテーブルをSELECTする権限を付与しました。
表示されました。
3列+10列=13列なので、結合は成功していました。
(顧客IDを表すカラムが2列もありますが…)
以上です。
拙い記事を読んでくださりありがとうございました!
よいデータ基盤に向けて勉強に励みたいです。
参考にした情報
ジョイナトランスフォーメーション※公式ドキュメント
Informatica Cloud Data Integration Tutorialのyoutube動画 Joiner Transformation※非公式
Informatica Intelligent Cloud Services(IICS)におけるSnowflakeの利用方法※manabian様のQiita記事。ありがとうございました。