Microsoft Azureへのアンロード

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

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

  • 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コンテナーからファイルをダウンロードします。

Unloading data to Azure

ちなみに

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

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

このトピックの内容:

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

SnowflakeがAzureコンテナーに書き込むには、ストレージアクセスアカウントの共有アクセス署名(SAS)トークンを生成する必要があります。構成手順については、 データをロードするためのAzureコンテナーの構成 をご参照ください。

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

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

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

ウェブインターフェイス

Databases Databases tab » <データベース名> » 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;

注釈

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;
    
  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;
    
  2. Azureコンソール(または同等のクライアントアプリケーション)を使用して、コンテナーからオブジェクト(コマンドによって生成されたファイル)を取得します。