クラウドストレージからデータをロードする: Microsoft Azure

紹介

このチュートリアルでは、 SQL を使用してクラウドストレージからSnowflakeにデータをロードする方法を説明します。これらのタスクを完了するには、 Snowsight のテンプレートワークシートを使用します。Amazon S3、Microsoft Azure、またはGoogle Cloud Storage(GCS)から使用するクラウドプロバイダーを選択できます。ワークシートには、各ストレージタイプに対応するようにカスタマイズされた SQL コマンドが含まれています。

注意

このチュートリアルで提供する例はMicrosoft Azure固有のもので、Azureコンテナからデータをロードするための SQL コマンドを示しています。

注釈

Snowflakeはこのチュートリアルのサンプルデータに使用されるディスク上のストレージに対して最小限の料金を請求します。このチュートリアルでは、データベースをドロップしてストレージコストを最小限に抑えるステップを示します。

Snowflakeには、サンプルデータをロードしてクエリを実行するために、 仮想ウェアハウス が必要です。稼働中の仮想ウェアハウスはSnowflakeのクレジットを消費します。このチュートリアルでは、無料クレジットを提供する 30日間のトライアルアカウント を使用するため、コストは発生しません。

学習内容

このチュートリアルでは、次の方法を学習します。

  • このチュートリアルで必要なSnowflakeオブジェクトを作成および使用する権限を持つロールを使用します。

  • ウェアハウスを使用してリソースにアクセスします。

  • データベースとスキーマを作成します。

  • テーブルを作成します。

  • クラウドプラットフォーム用のストレージ統合を作成します。

  • ストレージ統合のためのステージを作成します。

  • ステージからテーブルにデータをロードします。

  • テーブルのデータをクエリします。

前提条件

このチュートリアルでは、次を前提としています。

注釈

このチュートリアルは、トライアルアカウントを持つユーザーのみが利用できます。ワークシートのサンプルは、他のタイプのアカウントでは使用できません。

ステップ1: Snowsight を使用してサインインする

公共のインターネット経由で Snowsight にアクセスするには、次を実行します。

  1. サポートされているウェブブラウザーで、https://app.snowflake.comに移動します。

  2. アカウント識別子 またはアカウント URL を入力します。以前に Snowsight にログインしたことがある場合は、選択できるアカウント名が表示されることがあります。

  3. Snowflakeアカウントの認証情報を使用してサインインします。

ステップ2:「クラウドストレージからデータをロード」ワークシートを開く

ワークシートを使って SQL コマンドを記述し、データベース上で実行することができます。あなたのトライアルアカウントは、このチュートリアルのテンプレートワークシートにアクセスできます。ワークシートには、データベースオブジェクトの作成、データのロード、データのクエリのために実行する SQL コマンドがあります。これはテンプレートワークシートであるため、特定の SQL パラメーターに独自の値を入力するよう求められます。ワークシートの詳細については、 ワークシートをはじめるにあたり をご参照ください。

このチュートリアルのワークシートは、トライアルアカウントにあらかじめロードされていません。このチュートリアルのワークシートを開くには、以下のステップに従います。

  1. 初めて Snowsight トライアルアカウントにサインインする場合は、 Where do you want to start? 画面の Load data into Snowflake の下にある Start を選択します。

    Where do you want to start? 画面を離れる場合、 Worksheets タブに移動し、バナーで Continue を選択します。

  2. Load data from cloud storage と言う名前の中央のパネルのどこかをクリックします。

    [Template] Load data from cloud storage worksheet が開き、ブラウザは次の画像のようになります。

クラウドテンプレートワークシートからの SQL ロードには、このチュートリアルのための SQL コマンドと説明コメントが含まれています。

ステップ3。使用するロールとウェアハウスを設定する

使用するロールによって権限が決まります。このチュートリアルでは、アカウント内のオブジェクトを表示および管理できるように ACCOUNTADMIN システムロールを使用します。詳細については、 ACCOUNTADMIN ロールの使用 をご参照ください。

ウェアハウスは DML 操作の実行、データのロード、クエリの実行に必要なコンピュートリソースを提供します。これらのリソースには、CPU、メモリ、仮ストレージが含まれます。トライアルアカウントには、このチュートリアルで使用できる仮想ウェアハウス(compute_wh)があります。詳細については、 仮想ウェアハウス をご参照ください。

使用するロールとウェアハウスを設定するには、次を実行します。

  1. 開いているワークシートで、 USE ROLE 行にカーソルを置きます。

    USE ROLE accountadmin;
    
    Copy
  2. ワークシートの右上隅で、 Run を選択します。

    注釈

    このチュートリアルでは、 SQL ステートメントを1つずつ実行します。 Run All を選択しないでください。

  3. カーソルを USE WAREHOUSE 行に置き、 Run を選択します。

    USE WAREHOUSE compute_wh;
    
    Copy

ステップ4。ロード可能なテーブルを設定する

データベースはデータの保管場所です。データは、管理およびクエリできるテーブルに保存されます。スキーマとは、テーブルやビューなどのデータベースオブジェクトを論理的にグループ化したものです。例えば、スキーマには特定のアプリケーションに必要なデータベースオブジェクトが含まれているかもしれません。詳細については、 データベース、テーブル、およびビュー - 概要 をご参照ください。

ロードできるデータベース、スキーマ、テーブルを作成するには、次を実行します。

  1. 開いているワークシートで CREATE OR REPLACE DATABASE 行にカーソルを置き、データベースの名前と任意のコメントを入力し、 Run を選択します。例:

    CREATE OR REPLACE DATABASE cloud_data_db
      COMMENT = 'Database for loading cloud data';
    
    Copy
  2. カーソルを CREATE OR REPLACE SCHEMA 行に置き、スキーマの名前とオプションのコメントを入力し、 Run を選択します。例:

    CREATE OR REPLACE SCHEMA cloud_data_db.azure_data
      COMMENT = 'Schema for tables loaded from Azure';
    
    Copy
  3. カーソルを CREATE OR REPLACE TABLE 行に置き、テーブル定義を完成させ、オプションのコメントを追加し、 Run を選択します。例えば、次の表には6つの列があります。

    CREATE OR REPLACE TABLE cloud_data_db.azure_data.calendar
      (
      full_date DATE
      ,day_name VARCHAR(10)
      ,month_name VARCHAR(10)
      ,day_number VARCHAR(2)
      ,full_year VARCHAR(4)
      ,holiday BOOLEAN
      )
      COMMENT = 'Table to be loaded from Azure calendar data file';
    
    Copy
  4. テーブルが正常に作成されたことを確認するには、 SELECT 行にカーソルを置き、 Run を選択します。

    SELECT * FROM cloud_data_db.azure_data.calendar;
    
    Copy

    出力には、作成したテーブルの列が表示されます。現在、テーブルに行はありません。

ステップ5:ストレージ統合を作成する

クラウドストレージからデータをロードする前に、クラウドプロバイダーに固有のストレージ統合を構成する必要があります。以下の例は、Microsoft Azureストレージ固有のものです。

統合は、名前付きのファーストクラスのSnowflakeオブジェクトであり、シークレットキーまたはアクセストークンといった、クラウドプロバイダーの明示的な認証情報を渡す必要がありません。統合オブジェクトには、アプリ登録と呼ばれるAzure IDおよびアクセス管理(IAM)ユーザー ID が格納されます。

Azureのストレージ統合を作成するには、次を実行します。

  1. Azureポータルを使用して、データをロードするためのAzureコンテナを構成します。詳細については、 データをロードするためのAzureコンテナーの構成 をご参照ください。

  2. 開いているワークシートで、 CREATE OR REPLACE STORAGE INTEGRATION 行にカーソルを置き、必要なパラメーターを定義し、 Run を選択います。例:

    CREATE OR REPLACE STORAGE INTEGRATION azure_data_integration
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'AZURE'
      AZURE_TENANT_ID = '075f576e-6f9b-4955-8e99-4086736225d9'
      ENABLED = TRUE
      STORAGE_ALLOWED_LOCATIONS = ('azure://tutorial99.blob.core.windows.net/snow-tutorial-container/');
    
    Copy

    使用する許可されたストレージの場所が含まれるストレージアカウントの AZURE_TENANT_ID をOffice 365テナント ID に設定します。この ID は、 Microsoft Entra ID > Properties > Tenant ID の下のAzureポータルにあります。(Microsoft Entra ID はAzure Active Directoryの新しい名称です。)

    ソースデータファイルが保存されているAzureコンテナのパスを STORAGE_ALLOWED_LOCATIONS に設定します。この例で示されている形式を使用します。 tutorial99 はストレージアカウント名、 snow-tutorial-container はコンテナ名です。

  3. カーソルを DESCRIBE INTEGRATION 行に置いて、作成したストレージ統合の名前を指定し、 Run を選択します。

    DESCRIBE INTEGRATION azure_data_integration;
    
    Copy

    このコマンドは、Snowflakeアカウント用に自動的に作成されたクライアントアプリケーションの AZURE_CONSENT_URL と AZURE_MULTI_TENANT_APP_NAME を取得します。これらの値を使用して、AzureポータルでSnowflakeの権限を構成します。

    このコマンドの出力は次のようになります。

    property、property_type、property_value、property_defaultの列を持つ DESCRIBE INTEGRATION コマンドの出力。
  4. カーソルを SHOW INTEGRATIONS 行に置き、 Run を選択します。このコマンドは、作成したストレージ統合に関する情報を返します。

    SHOW INTEGRATIONS;
    
    Copy

    このコマンドの出力は次のようになります。

    name、type、category、enabled、comment、created_onの列を持つ SHOW INTEGRATIONS コマンドの出力。
  5. Azureポータルを使用して、クライアントアプリケーション(トライアルアカウント用に自動的に作成されたもの)のストレージコンテナへのアクセス許可を構成します。 データをロードするためのAzureコンテナーの構成 にある ステップ2:ストレージの場所にSnowflakeアクセスを許可する に従います。

ステップ6:ステージの作成

ステージは、Snowflakeデータベースにロードするデータファイルを保持する場所です。このチュートリアルでは、Azureコンテナなど、特定のタイプのクラウドストレージからデータをロードできるステージを作成します。

ステージを作成するには、次を実行します。

  1. 開いたワークシートで、 CREATE OR REPLACE STAGE 行にカーソルを置き、名前、作成したストレージ統合、バケット URL、正しいファイル形式を指定し、 Run を選択します。例:

    CREATE OR REPLACE STAGE cloud_data_db.azure_data.azuredata_stage
      STORAGE_INTEGRATION = azure_data_integration
      URL = 'azure://tutorial99.blob.core.windows.net/snow-tutorial-container/'
      FILE_FORMAT = (TYPE = CSV);
    
    Copy
  2. 作成したステージに関する情報を返します。

    SHOW STAGES;
    
    Copy

    このコマンドの出力は次のようになります。

    created_on、name、database_name、schema_name、urlの列を持つ SHOW STAGES コマンドの出力。

ステップ7。ステージからのデータのロード

COPY INTO <テーブル> コマンドを使用して作成したステージからテーブルをロードします。Azureコンテナからのロードの詳細については、 Azureステージからのデータのコピー をご参照ください。

テーブルにデータをロードするには、 COPY INTO 行にカーソルを置き、テーブル名、作成したステージ、ロードしたいファイル名を指定し、 Run を選択します。例:

COPY INTO cloud_data_db.azure_data.calendar
  FROM @cloud_data_db.azure_data.azuredata_stage
    FILES = ('calendar.txt');
Copy

出力は、次の画像に類似したものになります。

5行がテーブルにコピーされます。出力には、file、status、rows_parsed、rows_loaded、error_limit列があります。

ステップ8。テーブルのクエリ

データがロードされたので、 calendar テーブルでクエリを実行できます。

開いているワークシートでクエリを実行するには、 SELECT コマンドの行を選択し、 Run を選択します。たとえば、次のクエリを実行します。

SELECT * FROM cloud_data_db.azure_data.calendar;
Copy

出力は、次の画像に類似したものになります。

テーブルのすべての行が選択されます。この例には、full_date、day_name、month_name、day_num、year_num、holiday列があります。

ステップ9。クリーンアップ、まとめ、追加リソース

おめでとうございます。トライアルアカウントのこのチュートリアルを完了しました。

数分かけて、短い要約とチュートリアルで説明されている重要な点を確認します。チュートリアルで作成したオブジェクトをドロップして、クリーンアップを検討することもできます。たとえば、作成しロードしたテーブルを削除したいかもしれません。

DROP TABLE calendar;
Copy

不要になった場合、ストレージ統合、ステージ、データベース、スキーマなど、作成した他のオブジェクトも削除できます。詳細については、 DDL (データ定義言語)コマンド をご参照ください。

概要と重要なポイント

要約すると、 Snowsight にあらかじめロードされているテンプレートワークシートを使って、以下のステップを完了しました。

  1. 使用するロールとウェアハウスを設定する。

  2. データベース、スキーマ、テーブルを作成する。

  3. ストレージ統合を作成し、クラウドストレージの権限を設定する。

  4. ステージを作成し、ステージからテーブルにデータをロードする。

  5. データをクエリする。

ここでは、データのロードとクエリについて覚えておくべきポイントをいくつかご紹介します。

  • アカウントのオブジェクトを作成および管理するには、必要な権限が必要です。このチュートリアルでは、これらの権限に ACCOUNTADMIN システムロールを使用します。

    このロールは通常、オブジェクトの作成には使用されません。代わりに、組織のビジネス機能に合わせてロールの階層を作成することをお勧めします。詳細については、 ACCOUNTADMIN ロールの使用 をご参照ください。

  • オブジェクトの作成と管理、SQL コマンドの実行に必要なリソースのためのウェアハウスが必要です。このチュートリアルでは、トライアルアカウントに含まれる compute_wh ウェアハウスを使用します。

  • データを格納するデータベースと、データベースオブジェクトを論理的にグループ化するスキーマを作成しました。

  • Azureコンテナに格納された CSV ファイルからデータをロードするために、ストレージ統合とステージを作成しました。

  • データがデータベースにロードされた後、 SELECT ステートメントを使ってクエリを実行しました。

次の内容

次のリソースを使用して、Snowflakeについて引き続き学習しましょう。