Microsoft Azureへのアンロード

既にMicrosoft Azureアカウントをお持ちで、ファイルの保存と管理にAzureコンテナーを使用している場合は、Snowflakeテーブルからデータをアンロードするときに既存のコンテナーとフォルダーパスを利用できます。このトピックでは、 COPY コマンドを使用して、テーブルからAzureコンテナーにデータをアンロードする方法について説明します。その後、アンロードされたデータファイルをローカルファイルシステムにダウンロードできます。

Snowflakeは、次のBLOBストレージアカウントのタイプをサポートしています。

  • BLOBストレージ

  • Data Lake Storage Gen2

  • 汎用v1

  • 汎用v2

Snowflakeは、Data Lake Storage Gen1をサポート していません

次の図に示すように、Azureコンテナーへのデータのアンロードは2つの手順で実行されます。

ステップ1:

COPY INTO <場所> コマンドを使用して、SnowflakeデータベーステーブルからAzureコンテナーバケット内の1つ以上のファイルにデータをコピーします。コマンドで、Azureコンテナーを参照する名前付き外部ステージオブジェクトを指定する(推奨)か、コンテナーの URI およびセキュリティ認証情報(必要な場合)を指定して、コンテナーに直接アンロードすることを選択できます。

コマンドを手動またはスクリプト内で実行する場合は、使用する方法に関係なく、このステップでは、稼働中の現行の仮想ウェアハウスがセッションのために必要です。ウェアハウスは、テーブルから行を書き込むためのコンピューティングリソースを提供します。

ステップ2:

Microsoftが提供するインターフェイス/ツールを使用して、Azureコンテナーからファイルをダウンロードします。

Azureへのデータのアンロード

Tip

この一連のトピックの手順では、 データのアンロードの準備 を読み終えて、必要がある場合は、名前付きファイル形式が作成済みであることを前提としています。

始める前に、ベストプラクティス、ヒント、およびその他のガイダンスについて データのアンロードに関する考慮事項 を読むこともできます。

このトピックの内容:

Azure仮想ネットワークサブネット IDs の許可

組織内のAzure管理者が、SnowflakeにAzureストレージアカウントへのアクセスを明示的に許可していない場合は、ここで許可できます。データのロードの設定手順にある VNet サブネット IDs の許可 のステップに従います。

データをアンロードするためのAzureコンテナーの構成

SnowflakeがAzureコンテナーに書き込むには、ストレージアカウントへのアクセスを構成する必要があります。手順については、 データをロードするためのAzureコンテナーの構成 をご参照ください。データのロードまたはアンロード操作に必要な特定の権限を呼び出す単一の命令セットを提供していることに注意してください。

外部ステージへのデータのアンロード

外部ステージは、データのアンロードに最大限の柔軟性を提供する名前付きデータベースオブジェクトです。データベースオブジェクトであるため、名前付きステージの権限は任意のロールに付与できます。

ウェブインターフェイスまたは SQLを使用して、外部の名前付きステージを作成できます。

Classic Console:

Databases データベースタブ » <データベース名> » Stages をクリックします

SQL:

CREATE STAGE

名前付きステージの作成

次の例では、 mycontainer という名前のコンテナーと unload という名前のフォルダーパスを持つ my_ext_unload_stage という名前の外部ステージを作成します。ステージは、 データのアンロードの準備 で作成された my_csv_unload_format という名前のファイル形式オブジェクトを参照します。

CREATE OR REPLACE STAGE my_ext_unload_stage
  URL='azure://myaccount.blob.core.windows.net/mycontainer/unload'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')
  FILE_FORMAT = my_csv_unload_format;
Copy

注釈

Data Lake Storage Gen2を含む、サポートされているすべてのタイプのAzure BLOBストレージアカウントに、 blob.core.windows.net エンドポイントを使用します。

この例で使用されている AZURE_SAS_TOKEN と MASTER_KEY の値は、説明のみを目的としています。

名前付きステージへのデータのアンロード

  1. COPY INTO <場所> コマンドを使用して、テーブルからAzureコンテナーに外部ステージを使用してデータをアンロードします。

    次の例では、 my_ext_unload_stage ステージを使用して、 mytable テーブルのすべての行をAzureコンテナーの1つ以上のファイルにアンロードします。ファイルには d1 ファイル名のプレフィックスが適用されます。

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
    Copy
  2. Azureが提供するツールを使用して、コンテナーからオブジェクト(つまり、コマンドによって生成されたファイル)を取得します。

Azure Containerへのデータの直接アンロード

  1. COPY INTO <場所> コマンドを使用して、テーブルから指定されたAzureコンテナーにデータを直接アンロードします。このオプションは、同じテーブルおよびコンテナーパラメーターを使用した通常のデータのアンロードを計画していない場合の、アドホックアンロードに適しています。

    Azureコンテナーの URI と、コンテナーにアクセスするためのセキュリティ認証情報を COPY コマンドで指定する必要があります。

    次の例では、 mytable テーブルのすべての行を、Azureコンテナーのフォルダーパスのプレフィックス unload/ を持つ1つ以上のファイルにアンロードします。

    この例は、アカウント管理者(つまり、ACCOUNTADMIN ロールを持つユーザー)またはグローバル CREATE INTEGRATION 権限を持つロールによって CREATE STORAGE INTEGRATION を使用して作成されたストレージ統合を参照しています。ストレージ統合により、ユーザーは認証情報を提供せずにプライベートの保存場所にアクセスできます。

    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;
    
    Copy
  2. Azureコンソール(または同等のクライアントアプリケーション)を使用して、コンテナーからオブジェクト(コマンドによって生成されたファイル)を取得します。