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

紹介

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

注意

このチュートリアルで提供される例はAmazon S3に特化したもので、S3バケットからデータをロードするための 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.s3_data
      COMMENT = 'Schema for tables loaded from S3';
    
    Copy
  3. カーソルを CREATE OR REPLACE TABLE 行に置き、テーブル定義を完成させ、オプションのコメントを追加し、 Run を選択します。例えば、次の表には6つの列があります。

    CREATE OR REPLACE TABLE cloud_data_db.s3_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 S3 calendar data file';
    
    Copy
  4. テーブルが正常に作成されたことを確認するには、 SELECT 行にカーソルを置き、 Run を選択します。

    SELECT * FROM cloud_data_db.s3_data.calendar;
    
    Copy

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

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

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

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

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

  1. AWS 管理コンソールを使用して、 IAM ポリシーと IAM ロールを作成します。これらのリソースは、データをロードするためのS3バケットへの安全なアクセスを提供します。Snowflakeでストレージ統合を作成するには、これらのリソースが必要です。コンソールにログインした後、 オプション1: Amazon S3にアクセスするためのSnowflakeストレージ統合の構成 の下で ステップ1と2 を完了します。

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

    CREATE OR REPLACE STORAGE INTEGRATION s3_data_integration
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'S3'
      STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::631373164455:role/tutorial_role'
      ENABLED = TRUE
      STORAGE_ALLOWED_LOCATIONS = ('s3://snow-tutorial-bucket/s3data/');
    
    Copy

    STORAGE_AWS_ROLE_ARN を以前に作成した IAM ロールの一意な識別子に設定します。この値は AWS 管理コンソールの IAM > Roles の下にあります。

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

    DESCRIBE INTEGRATION s3_data_integration;
    
    Copy

    このコマンドは、Snowflakeアカウントに自動的に作成された AWS IAM ユーザーの ARN と外部 ID を取得します。これらの値を使用して、 AWS 管理コンソールで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. AWS 管理コンソールを使用して、 IAM ユーザー(トライアルアカウント用に自動的に作成されたユーザー)のストレージバケットへのアクセス許可を構成します。 オプション1: Amazon S3にアクセスするためのSnowflakeストレージ統合の構成 にある ステップ5 に従います。

    Azureまたは GCS を使用している場合は、 Microsoft Azureからの一括ロードGoogle Cloud Storageからの一括ロード で同等の構成手順を見つけることができます。

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

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

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

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

    CREATE OR REPLACE STAGE cloud_data_db.s3_data.s3data_stage
      STORAGE_INTEGRATION = s3_data_integration
      URL = 's3://snow-tutorial-bucket/s3data/'
      FILE_FORMAT = (TYPE = CSV);
    
    Copy
  2. 作成したステージに関する情報を返します。

    SHOW STAGES;
    
    Copy

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

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

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

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

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

COPY INTO cloud_data_db.s3_data.calendar
  FROM @cloud_data_db.s3_data.s3data_stage
    FILES = ('calendar.txt');
Copy

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

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

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

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

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

SELECT * FROM cloud_data_db.s3_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 ウェアハウスを使用します。

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

  • AWS S3 バケットに格納されている CSV ファイルからデータをロードするために、ストレージ統合とステージを作成しました。

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

次の内容

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