SnowflakeへAzure Data Factoryを用いてデータ連携する方法とは?(vol.5)

  • 公開日:2022年12月19日(月)

Snowflakeへ連携元データベースのデータをコピーしたり、CSVなどのファイルからデータ連携する場合に使用するETLツールには、TalendやInformaticaなど、様々なツールがあります。

また、Snowflakeは、すべてがクラウドインフラストラクチャ上で実行されるSoftware-as-a-Service(SaaS)として提供され、Snowflakeアカウントは、次の3つのクラウドプラットフォームのいずれでもホストできます。
・Amazon Web Services(以降、AWSという)
・Google Cloud Platform(以降、GCPという)
・Microsoft Azure(以降、Azureという)
※ご参考URL:https://docs.snowflake.com/ja/user-guide/intro-cloud-platforms.html

本ブログでは、Azure上にSnowflakeをホストした際に有用となるETLツール:Azure Data Factoryを用いてSnowflakeへデータ連携する際に必要となる①コネクタの設定方法や②(簡単な)データパイプラインの設定方法を解説します。また、データベースやファイルからSnowflakeへデータを作成する方法も解説します。

SnowflakeへAzure Data Factoryを用いてデータ連携する方法①コネクタ設定

それではまず、Azure Data Factoryのコネクタを用いてSnowflakeへ接続を行う設定方法の一例を示します。設定方法は次の通りです。
※事前にSnowflakeのアカウント、データ連携用のテーブル作成、Azure Data Factory、Blob Storageのインスタンス作成が行われている状態で設定を行います。

  1. リンクサービス作成
    Azure Data Factory Studioの左側にある管理タブ(カバンのボタン)をクリックして、Connections の下にあるLinked servicesをクリックします。
    リンクサービスの画面に遷移後、新規ボタンまたは、リンクサービスの作成ボタンをクリックします。
  2. Snowflakeコネクタの選択
    リンクサービスの作成ボタンをクリックしますと、画面の右側に新しいリンクサービスの画面が表示されます。
    データストアの検索欄にSnowflakeを入力し、Snowflakeを選択し、画面の下側にある続行ボタンをクリックします。
  3. Snowflakeへの接続設定
    新しいリンクサービスの画面でSnowflakeへ接続を行う、下表の内容を入力して、テスト接続ボタンをクリックします。
    テスト接続が成功したら、作成ボタンをクリックします。

    項目 入力内容
    名前 リンクサービスの名前(任意で設定可能)
    ※作成後は変更不可
    アカウント名 Snowflakeのアカウント名
    ユーザー名 Snowflakeへログインするユーザー名
    パスワード Snowflakeへログインするパスワード
    データベース Snowflakeで使用するテーブルなどを保存しているデータベース名
    ウェアハウス Snowflakeでデータの抽出やデータ作成で使用するウェアハウス
    ロール Snowflakeで使用するロール

    リンクサービスの作成が終了すると下図のように、リンクサービスの画面で作成したリンクサービスが表示されます。

  4. データセットの作成
    Azure Data Factory Studioの左側にある編集タブ(えんぴつのボタン)をクリックして、Datasetsのアクション(・・・のリンク)をクリックして新しいデータセットをクリックします。

    新しいデータセットをクリックすると、画面の右側に新しいデータセットの画面が表示されます。
    データストアの検索欄にSnowflakeを入力し、Snowflakeを選択し、画面の下側にある続行ボタンをクリックします。
  5. Snowflakeテーブル接続設定
    データセットの続行ボタンをクリック後、プロパティの設定画面が表示されます。
    下表の項目を入力して、OKボタンをクリックします。

    項目 入力内容
    名前 データセットの名前(任意で設定可能)
    ※作成後は変更可能
    リンクサービス 作成したSnowflakeのリンクサービス
    テーブル名 検索やデータ作成を行う、Snowflakeのテーブル名


    OKボタンをクリック後、データセットが作成され、確認可能になります。
    テスト接続ボタンをクリックして、接続の確認を行うことができます。
    データのプレビューボタンをクリックすると、Snowflakeのデータが表示されます。

以上の設定を行うことで、Snowflakeのテーブルへの接続設定が完了します。
すべて発行ボタンをクリックして、設定したデータセットを保存します。

SnowflakeへAzure Data Factoryを用いてデータ連携する方法②パイプライン設定

次に、Azure Data Factoryのパイプラインを用いてSnowflakeのテーブルへ接続を行う設定方法の一例を示します。設定方法は次の通りです。
※事前にSnowflakeテーブルのデータセットとBlob Storageのデータセットの作成が行われている状態で設定を行います。

  1. パイプラインの作成
    Azure Data Factory Studioの左側にある編集タブ(えんぴつのボタン)をクリックして、Pipulinesのアクション(・・・のリンク)をクリックして新しいパイプラインをクリックします。

    パイプラインが作成され、今回はCSVファイルからSnowflakeへのテーブルへデータ作成を行うためにデータのコピーのアクティビティを選択します。

  2. ソース(データ連携元)設定
    パイプラインのコピーアクティビティにあるソースタブを選択し、データ連携元の設定を行います。
    ソースのデータセットで抽出元のBlob Storageのファイルを設定したデータセットを選択し、ソースの設定を行います。
  3. シンク(データの連携先)設定
    パイプラインのコピーアクティビティにあるシンクタブを選択し、データ連携先の設定を行います。
    ソースのデータセットで連携先のSnowflakeのテーブルを設定したデータセットを選択し、シンクの設定を行います。
    事前コピースクリプトにtruncate文やdelete文を入力することにより、データの洗い替えや差分更新を行うことが可能になります。
  4. マップ設定
    パイプラインのコピーアクティビティにあるマップタブを選択し、ソースとシンクのカラムマッピングを行います。
    スキーマのインポートボタンをクリックすると、自動でマッピングを行われます。マッピングの結果が実際に行うマッピングと異なる場合は、手動でカラムを変更します。
  5. ステージング設定
    Azure Data FactoryからSnowflakeへデータを連携するコピーアクティビティでは次の設定が必要になります。
    設定タブを選択し、ステージングを有効にするにチェックを入れます。
    ステージングアカウントのデータセットにBlob Storageのデータセットを選択し、ストレージパスにファイルを出力するストレージのパスをセットします。
    上記の設定が終了したら、すべて発行ボタンをクリックし、パイプラインを保存します。
  6. パイプライン実行
    パイプラインの保存後、トリガーの追加ボタンをクリックし、今すぐトリガーをクリックします。
    今回作成したパイプラインでは、パラメータを設定していないので、パイプライン実行画面では何も設定を行う必要はなく、OKボタンをクリックします。

  7. 連携データの確認
    パイプライン実行の処理が終了したら、Snowflakeでテーブルにデータが作成されているか確認を行います。
    下図のように、CSVデータがSnowflakeテーブルのSELECT処理で確認することができれば、パイプライン処理が正常に行われていることが確認できます。
  8. コピー以外の処理
    パイプラインではコピー処理以外にもスクリプトを使用してSQLを実行してデータの削除や作成などを行うことも可能です。
    アクティビティからスクリプトを選択します。

    選択したスクリプトでリンクサービスをSnowflakeのリンクサービスを選択してスクリプト欄にSQLを記載します。


    truncate文を実行後、insert文を実行するSQLを設定したパイプラインを実行すると下図のように、対象のテーブルにデータが更新されます。

AWSやGCP上にホストされたSnowflakeへAzure Data Factoryを用いてデータ連携するには?

Azure上にホストされたSnowflakeへAzure Data Factoryを用いてデータ連携する方法は理解できたかと思いますが、AWSやGCP上にホストされたSnowflakeへAzure Data Factoryを用いてデータ連携する場合はどうなるのでしょうか?

  1. Azure Data FactoryからAWSやGCP上にホストされたSnowflakeへのデータ書き込みは不可
    2022年10月時点では、Azure Data FactoryからSnowflakeへのデータ書き込みについて、Azure上にホストされたSnowflake以外の(AWSやGCP上にホストされた)Snowflakeをシンク(データの連携先)に設定して書き込みを行う処理は、下図のようにエラーになります。

  2. Azure Data FactoryからAWSやGCP上にホストされたSnowflakeのデータ読み込みは可能
    Azure Data FactoryからSnowflakeのデータ読み込みについて、Azure上にホストされたSnowflake以外の(AWSやGCP上にホストされた)Snowflakeをソースに設定しても、データを読み込むことは可能です。
    また、データの参照も下図のように行うことができます。

まとめ

さて、これまではAzure Data Factoryを用いてAzure上にホストされたSnowflakeへデータを連携したり、加工したりする処理に関する設定方法を簡単に解説して参りました。
複雑な処理や大量データを扱う場合は、DatabricksをAzure Data Factoryから実行するなどの方法もありますが、今回ご紹介したような、連携元データをSnowflakeへコピーする処理や、SnowflakeへコピーしたデータがあるテーブルからSQLを実行してデータの削除や作成などを行う場合は、コピーアクティビティやスクリプトの処理をAzure Data Factoryで実行することで実現可能です。

弊社電通総研は、Snowflakeを使用したデータ基盤の”短期”構築を実現すべく、SnowBaseを開発しました。
SnowBaseは、SnowflakeとAzureでデータ分析基盤を構成する際に活用できる導入テンプレートです。
「拡張性と柔軟性を持つ全社横断のデータ基盤を短期に構築したい」といったご要望がございましたら、是非、電通総研へお声掛けください。

◆ お問い合わせページ:https://itsol.dentsusoken.com/snowflake/inquiry/

*本記事は、2022年12月1日時点の情報を基に作成しています。
 製品・サービスに関する詳しいお問い合わせは、電通総研のWebサイトからお問い合わせください。