11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Informatica Data Loader for Snowflakeを使ってみた

Last updated at Posted at 2022-12-13

はじめまして! NTTデータ ソリューション事業本部 デジタルサクセスソリューション事業部 の nttd-nagano です。

今回は「Informatica Data Loader for Snowflake」を使ってみましたので、本記事ではその操作方法などをご紹介します。
informatica_data_loader_header.jpg

はじめに:NTTデータとInformaticaのパートナーシップ

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ている Informatica(インフォマティカ) 社とパートナーシップを結び、サービス強化を推進しています。
informatica_logo.png

前置きが長くなりましたが…

さて皆さま、 AWS最大のカンファレンスイベント「re:Invent 2022 は、ご覧になりましたでしょうか。
aws_reinvent_2022.jpg

…と、先ほどまでInformaticaの話をしていたのに急にAWSの話をしはじめましたが、実はInformaticaは、re:Invent 2022にて、「Design Partner of the Year 2022」と「Analytics Partner of the Year 2022」を受賞している くらい、AWSと緊密なパートナーシップを結んでいる会社なのです。

今回、Informaticaによるブレイクアウトセッションも2つありました。
YouTubeのAWS Eventsチャネルに動画が掲載されておりますので、気になった方はご覧ください。

さて、この動画の中で、「Informatica Data Loader for Amazon Redshift」が紹介されていました。
これは数あるInformaticaのソリューションの中のひとつに、様々なロード元(後述)からロード先(「AWS Redshift」「Azure Synapse SQL」「Google BigQuery」「Databricks Delta」「Snowflake Data Cloud」)へ大容量のデータをロードすることができる 無料のソリューション「Informatica Data Loader」 というものあり、今回 そのRedshift版がAWSマネジメントコンソールのRedshiftのUIから起動・運用できるようになった という内容でした。
※. 詳細については、AWS公式の発表をご覧ください。

さっそく使ってみよう…と思いましたが、それは他社様に先を越されてしまっておりますので、
今回は、「Informatica Data Loader for Snowflake」を使ってみようと思います。

この Snowflake」とは、Snowflake社が提供するクラウドベースのデータプラットフォームサービス です。
ここのところ注目を集めているサービスですので、耳にしたことがある方もいらっしゃるかと思います。
「Snowflakeとは何であり、具体的に何がすごいのか」については、弊社 村山がITmedia様に寄稿しておりますので、気になる方はご覧ください。

下準備:ロード元とロード先の準備

話が逸れてしまいました。本題に戻ります。

さて、まずは下準備です。

はじめに、ロード元として、AWS内にRDS for PostgreSQLを用意しました。
データベース「postgres」内のスキーマ「public」配下に、テーブル「customer」を作成して、顧客情報を模したダミーデータを入れておきました。
informatica_data_loader_for_snowflake_001.png
informatica_data_loader_for_snowflake_002.png

一方、ロード先となるSnowflakeには、Data Loaderが使用するロール「DATALOADER_ROLE」およびそのロールを付与したユーザー「DATALOADER_USER」を作成し、データベース「DATALODER_TARGET_DB」を作成しておきました。
informatica_data_loader_for_snowflake_003.png

「Informatica Data Loader for Snowflake」を使ってみた

さて、ようやくここからが「Informatica Data Loader for Snowflakeを使ってみた」です。

サインアップ

まず、Informatica Marketplaceの Informatica Data Loader for Snowflakeのページ にアクセスします。
informatica_data_loader_for_snowflake_004.jpg

次にフォームに入力していきます。

項目 説明
Work Email メールアドレスを入力します。ログインする際のユーザー名として使用されます。
Create Password パスワードを入力します。
Select Region Data Loaderが処理をするための「Informatica Cloud Hosted Agent」は世界の様々なリージョンでホストされています。日本の方は「Asia Pacific」を選択するのが自然かと思います。「Informatica Cloud Hosted Agent」については、後述します。
Click here to receive marketing communitations ...(略) Informatica社からマーケティング用のメールが送付されてもOKであれば、チェックを入れてください。
I acknowledge that I have read and agree to the End User Terms. エンドユーザー規約を読み、同意できる場合にチェックを入れてください。

「SIGN ME UP」ボタンをクリックすると、ログイン画面に遷移します。

ログイン

先ほどフォームに入力したログイン情報を入力し、「ログイン」ボタンをクリックします。

informatica_data_loader_for_snowflake_005.jpg

次に、「セキュリティの質問の設定」(いわゆる「秘密の質問」とその答え)を求められるので、入力します。

すると、Data Loaderのホーム画面に遷移します。
informatica_data_loader_for_snowflake_006.png

データローダータスクの作成

それでは、ここからはData Loaderのための「タスク」を定義していきます。
なお、操作に困った場合は、公式オンラインヘルプ もあわせてご覧ください。

まず、左ペインの「新規」をクリックします。
すると、「データローダータスク」の作成画面に遷移します。

ロード元への接続の作成と設定

まずは、ロード元(「ソース」)への「接続」を作成していきます。
この「接続」は、対象へ接続するための情報を管理する定義体です。

「新しい接続」ボタンをクリックします。
informatica_data_loader_for_snowflake_007.png

下図のように様々な種類の「接続」を作ることができます。
(一覧は Data Loader公式オンラインヘルプ をご覧ください)
informatica_data_loader_for_snowflake_008.png
informatica_data_loader_for_snowflake_009.png
informatica_data_loader_for_snowflake_010.png
informatica_data_loader_for_snowflake_011.png

今回はロード元がRDS for PostgreSQLですので、「PostgreSQL」を選択し、「続行」ボタンをクリックします。

対象に接続するための情報を入力していきます。
フォーム内に赤い「*」が表示されているのが、必須項目です。

項目 説明
接続名 * 任意の文字列を入力します。
説明 入力不要です。
ランタイム環境 Data Loaderがデータを処理する際に利用する環境(マシン上のプロセス)です。Data Loaderではあらかじめ「Informatica Cloud Hosted Agent」と固定で入力されています。これはロード元のデータをInformatica社のネットワーク内にあるマシン上のプロセスで処理することを示しています。
Host Name * 今回のようにRDSであれば、エンドポイントを入力します。
Port * あらかじめ5432と入力されています。PostgreSQLのデフォルトTCPポート番号から変更している場合は、修正します。
Database * 対象のデータベース名を入力します。今回は「postgres」と入力しました。
Schema 指定する必要がある場合に入力します。
User Name * 接続する際のユーザー名を入力します。
パスワード * ユーザー名に対応するパスワードを入力します。
Encryption Method データローダータスクには適用されません。
Vaidate Server Certificate データローダータスクには適用されません。
TrustStore データローダータスクには適用されません。
TrustStore Password データローダータスクには適用されません。
Host name in Certificate データローダータスクには適用されません。
KeyStore データローダータスクには適用されません。
KeyStore Password データローダータスクには適用されません。
Key Password データローダータスクには適用されません。
Additional Connection Properties 必要があれば入力します。
SSLv3 データローダータスクには適用されません。
TLSv1_2 データローダータスクには適用されません。

informatica_data_loader_for_snowflake_012.png
informatica_data_loader_for_snowflake_013.png

ロード元への接続パスと設定変更

さて、ここで、RDSの設定を変更しておきましょう。

というのも、Data Loaderでは、Informaticaのネットワーク内のマシンにてホストされている「Informatica Cloud Hosted Agent」にてデータを処理するため、対象がインターネット経由でアクセスできるようになっている必要があるためです。

RDSであれば、「パブリックアクセス可能」(パブリックアクセシビリティ:あり) に設定されている必要があります。

なお、「インターネット経由でアクセスできるようにする」というと、身構える方がいらっしゃるかもしれません。
ただし、次のリンクの通り、「Informatica Cloud Hosted Agent」のIPアドレスは公開されており、対象をインターネット全体に公開する必要はなく、これで絞ることができます。

上記ページの通り、本記事執筆時点(2022年12月)では、「Asia Pacific」リージョンの「Informatica Cloud Hosted Agent」のIPアドレスは、次のいずれかになります。

  • 52.65.142.220
  • 13.236.57.22

今回はロード元がRDS for PostgreSQLですので、これらのIPアドレスからTCPポート5432番への接続を許可するようなルールを、RDS用VPCセキュリティグループのインバウンドルールに追加すれば、接続元を「Informatica Cloud Hosted Agent」に限定できます。

話は戻って…

さて、「テスト」ボタンをクリックし、入力した情報が正しいかを確認します。
informatica_data_loader_for_snowflake_014.png

ここで、「この接続のテストに成功しました。」と表示されれば、問題ありません。
そうでない場合は、フォームへ入力した情報や、ロード元側(今回であればRDS側)の設定を確認してみてください。

「追加」ボタンをクリックします。

次に、どのテーブルを対象とするかを選びます。
「オブジェクトの定義」の「ソースオブジェクト」にて、下記のいずれかを選択します。

  • すべてを読み取る
  • 一部を除外
  • 一部を含める

不要なテーブルはロードしないようにできるわけですね。
informatica_data_loader_for_snowflake_015.png

今回は「一部を含める」を選択してみました。

すると画面が一部書き換わり、「含めるソースオブジェクト」と表示されます。
informatica_data_loader_for_snowflake_016.png

「含めるソースオブジェクト」の右端の「+」アイコンをクリックします。
自動的にロード元へ接続され、対象テーブルを選ぶダイアログが表示されます。
左ペインにてスキーマを選択し、右ペインにてオブジェクト(テーブル)を選択します。
informatica_data_loader_for_snowflake_017.png

今回はテーブル「customer」のみを選択し、「OK」ボタンをクリックしました。
(もちろん、複数選択することもできます。)
informatica_data_loader_for_snowflake_018.png

ここで、下部の「ソースデータを微調整しますか?」にて、さらに細かい設定をすることもできます。

項目 説明
フィールドの除外 対象外としたいフィールド(テーブルの場合はカラム)を選択できます。
フィルタの定義 一部のレコードのみを対象にするためのフィルタを定義できます。
プライマリキーの定義 プライマリキーフィールドを定義できます。タスクを再実行するときに行をUPDATEする場合は、プライマリキーフィールドが必要です。
ウォーターマークフィールドの定義 ウォーターマークフィールドを定義できます。ウォーターマークフィールドは、どのレコードが追加されたかあるいは変更されたかを識別する日付/時刻フィールドあるいは数値フィールドです。 ソースにウォーターマークフィールドが定義されていない場合、タスクを実行するたびにソースのすべてのレコードを処理する必要があり、タスクの処理時間が長くなります。プライマリキーの定義と合わせて定義することで、増分ロードを実行することができるようになります。

informatica_data_loader_for_snowflake_019.png

今回は簡単のため、細かい設定はせず、「次へ」ボタンをクリックします。

ロード先への接続の作成と設定

ロード先(「ターゲット」)への「接続」を作成していきます。

「新しい接続」ボタンをクリックします。
informatica_data_loader_for_snowflake_020.png

対象に接続するための情報を入力していきます。
フォーム内に赤い「*」が表示されているのが、必須項目です。

項目 説明
接続名 * 任意の文字列を入力します。
説明 入力不要です。
ランタイム環境 Data Loaderがデータを処理する際に利用する環境(マシン上のプロセス)です。Data Loaderではあらかじめ「Informatica Cloud Hosted Agent」と固定で入力されています。ロード元のデータをInformatica社のネットワーク内にあるマシン上のプロセスで処理することを示しています。
Authentication 認証方式を指定します。詳細は Snowflakeの公式ドキュメント をご覧ください。
ユーザー名 * 接続するためのユーザー名を入力します。今回は「DATALOADER_USER」と入力しました。
パスワード * ユーザー名に対応するパスワードを入力します。
Account * Snowflakeのウェブインターフェースにログインする際に「xxxxxxxxxx.snowflakecomputing.com」のようなドメインにアクセスするかと思います。そのxxxxxxxxxの部分を入力します。詳細は Data Loaderの公式オンラインヘルプ をご覧ください。
Warehouse * ロード処理をする際に使うウェアハウスを入力します。今回は「DATALOADER_WH」と入力しました。
Role ウェアハウスを使う際のロールを入力します。必須項目となっていませんが、入力した方が誤りが少ないかと思います。
Additional JDBC URL Parameters 必要があれば入力します。

informatica_data_loader_for_snowflake_021.png

さて、「テスト」ボタンをクリックし、入力した情報が正しいかを確認します。
informatica_data_loader_for_snowflake_022.png

ここで、「この接続のテストに成功しました。」と表示されれば、問題ありません。
そうでない場合は、フォームへ入力した情報や、ロード先側(Snowflake側)の設定を確認してみてください。

「追加」ボタンをクリックします。

次に、どこにロードするかを入力していきます。

項目 説明
ターゲット名のプレフィックス ロード先のテーブル名にプレフィックスを付与することができます。必要があれば入力します。
TableType 入力不要です。
Path * 【データベース名】/【スキーマ名】の形式で入力します。今回は「DATALOADER_TARGET_DB/PUBLIC」と入力しました。
既存のテーブルにロードしますか? 既存のテーブルに増分ロードする場合は「はい」を選びます。増分ロードでは、ロードされる行が少なくなるため、タスクのパフォーマンスが向上します。増分ロードするためにはウォーターマークフィールドが設定されている必要があります。今回は「いいえ、毎回新しいテーブルを作成する」を選択しました。

informatica_data_loader_for_snowflake_023.png

「次へ」ボタンをクリックします。

データローダータスク実行

画面上部に「開始!」と表示されているかと思います。
これでほぼ準備ができました。
informatica_data_loader_for_snowflake_024.png

なお、下部の「カスタマイズ」にて、詳細を設定できます。

項目 説明
スケジュール 定期的に実行したい場合に設定します。
通知 タスクが正常に終了したとき、警告つきで終了したとき、または失敗した際に、ユーザーに電子メールを送信してほしい場合に設定します。
タスクの場所 現在作っているデータローダータスクの保存先プロジェクトを指定します。通常変更の必要はありません。
ランタイム環境 Data Loaderでは「Informatica Cloud Hosted Agent」固定です。

今回はカスタマイズ設定はせず、「保存」ボタンをクリックしました。
informatica_data_loader_for_snowflake_025.png

ここで、「データローダータスク"データローダータスク1"が正常に保存されました。」と表示されれば問題ありません。

それでは、「実行」ボタンをクリックし、Data Loaderを動作させてみましょう。
「実行」ボタンをクリックすると、「データローダータスク1を開始しました。マイジョブで表示してください。」と表示されます。
informatica_data_loader_for_snowflake_026.png

データローダータスクの実行状況を見るには、先ほどの指示通り、左ペインの「マイジョブ」をクリックします。
データローダータスクが実行中の場合は「ステータス」に「実行中」と表示されます。
informatica_data_loader_for_snowflake_027.png

状況が変化すると、画面上部に「使用可能な更新」と表示されます。それをクリックすると、画面が更新されます。
informatica_data_loader_for_snowflake_028.png

データローダータスクの実行が正常に終了した場合は、「ステータス」に「成功」と表示されます。
また、「処理済みの行数」に処理対象となったレコード数が表示されます。

一方、実行時に異常が発生した場合は、「ステータス」に「エラー」と表示されます。
informatica_data_loader_for_snowflake_029.png

「インスタンス名」の箇所をクリックすると、実行結果の詳細が表示されます。
informatica_data_loader_for_snowflake_030.png

なお、「ステータス」が「エラー」の場合は、この画面から ログファイルをダウンロードできます

結果の確認

さあ、Snowflakeのウェブインターフェースにログインして、結果を見てみましょう。

まず、データベース「DATALOADER_TARGET_DB」のスキーマ「PUBLIC」の配下に、期待通りテーブル「customer」が作成されていることが確認できました。

informatica_data_loader_for_snowflake_031.png

次に、「Data Preview」をクリックして、プレビューしてみると、ロード元のRDSのテーブルに入っていたデータが、ロード先のSnowflakeのテーブルに期待通り入っていることを確認できました。
レコード件数も問題ありません。

informatica_data_loader_for_snowflake_032.png

これで実際に成功していることが確認できました。
もし、エラーが発生した場合は、前述のログファイルを確認したり、Snowflakeのウェブインターフェースの「Activity」の「Query History」にて実際に発行されているクエリを確認すると良いかと思います。

おわりに

以上、「Informatica Data Loader for Snowflake」を使ってみたでした。
無料でこれが使えるというのは、なかなかすごいと思います。

なお、「Informatica Data Loader」は、Informaticaのクラウドデータマネージメントプラットフォームである「Intelligent Data Management Cloud」(略称はIDMC。旧称はIICS)をベースに動作しています。

IDMCには今回ご紹介したData Loaderの他にも、データ統合、API統合、マスターデータ管理、データガバナンス関連など様々なサービスがあります。
これらについても、今後、当Organization の記事でご紹介していく予定ですので、ご興味がございましたらご覧ください。

仲間募集

NTTデータ ソリューション事業本部 では、以下の職種を募集しています。

1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)

クラウド/プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

2. データサイエンス領域(データサイエンティスト/データアナリスト)

データ活用/情報処理/AI/BI/統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX/デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

3.お客様のAI活用の成功を推進するAIサクセスマネージャー

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata-career.jposting.net/u/job.phtml?job_code=804

4.DX/デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》 データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata-career.jposting.net/u/job.phtml?job_code=898

ソリューション紹介

Trusted Data Foundationについて

~データ資産を分析活用するための環境をオールインワンで提供するソリューション~
https://www.nttdata.com/jp/ja/lineup/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

TDFⓇ-AM(Trusted Data Foundation - Analytics Managed Service)について

~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~
https://www.nttdata.com/jp/ja/lineup/tdf_am/
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

NTTデータとInformaticaについて

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://www.nttdata.com/jp/ja/lineup/informatica/

NTTデータとTableauについて

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://www.nttdata.com/jp/ja/lineup/tableau/

NTTデータとAlteryxについて
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://www.nttdata.com/jp/ja/lineup/alteryx/

NTTデータとDataRobotについて
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://www.nttdata.com/jp/ja/lineup/datarobot/

NTTデータとDatabricksについて
NTTデータでは、Databricks Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Databricks」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Databricksは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://www.nttdata.com/jp/ja/lineup/databricks/

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?