前提条件¶
このチュートリアルでは、次を前提としています。
Amazon AWS を使用するように構成されたSnowflakeアカウントと、データベース、テーブル、および仮想ウェアハウスオブジェクトを作成するために必要な権限を付与するロールを持つユーザーがある。
SnowSQL (CLI クライアント) がインストールされている。
Snowflakeを20分で紹介 チュートリアルでは、これらの要件を満たすための関連する段階的な手順が提供されています。
Snowflakeは、このチュートリアルで使用するパブリックS3バケットにサンプルデータファイルを提供します。ただし、開始する前に、このチュートリアル用のデータベース、テーブル、仮想ウェアハウス、および外部ステージを作成する必要があります。これらは、Snowflakeのほとんどのアクティビティに必要となる基本的なSnowflakeオブジェクトです。
サンプルデータファイルについて¶
このチュートリアルでは、パブリックS3バケットで提供される次のサンプルアプリケーションイベント JSON データを使用します。
{
"device_type": "server",
"events": [
{
"f": 83,
"rv": "15219.64,783.63,48674.48,84679.52,27499.78,2178.83,0.42,74900.19",
"t": 1437560931139,
"v": {
"ACHZ": 42869,
"ACV": 709489,
"DCA": 232,
"DCV": 62287,
"ENJR": 2599,
"ERRS": 205,
"MXEC": 487,
"TMPI": 9
},
"vd": 54,
"z": 1437644222811
},
{
"f": 1000083,
"rv": "8070.52,54470.71,85331.27,9.10,70825.85,65191.82,46564.53,29422.22",
"t": 1437036965027,
"v": {
"ACHZ": 6953,
"ACV": 346795,
"DCA": 250,
"DCV": 46066,
"ENJR": 9033,
"ERRS": 615,
"MXEC": 0,
"TMPI": 112
},
"vd": 626,
"z": 1437660796958
}
],
"version": 2.6
}
データは、アプリケーションがS3にアップロードするサンプルイベントを表します。イベントは、サーバー、携帯電話、ブラウザーなど、さまざまなデバイスやアプリケーションにより発行されます。一般的なデータ収集シナリオでは、スケーラブルなウェブエンドポイントがさまざまなソースから POSTed データを収集し、キューシステムに書き込みます。次に、インジェストサービス/ユーティリティはデータをS3バケットに書き込みます。そこからSnowflakeにデータをロードできます。
サンプルデータは、次の概念を示しています。
アプリケーションにより、イベントをバッチでグループ化することを選択できます。バッチは、バッチ内のすべてのイベントに共通のヘッダー情報を保持するコンテナーです。たとえば、前述の JSON は、これらのイベントを生成した
device_type
とversion
で共通のヘッダー情報を持つ2つのイベントのバッチです。Amazon S3は、フォルダーの概念を使用してバケットを整理することをサポートしています。アプリケーションにより、この機能を利用してイベントデータを分割できます。通常、パーティション分割スキームは、イベントを生成したアプリケーションや場所などの詳細と、イベントがS3に書き込まれた日付を識別します。このようなパーティション分割スキームにより、単一の COPY コマンドで、パーティションされたデータの任意の部分をSnowflakeにコピーできます。たとえば、最初にテーブルにデータを入力するときに、時間、データ、月、または年ごとにイベントデータをコピーできます。
例:
s3://bucket_name/application_a/2016/07/01/11/
s3://bucket_name/application_b/location_c/2016/07/01/14/
application_a
、application_b
、location_c
などは、パス内にあるデータすべてのソースの詳細を識別することに注意してください。データは、書き込まれた日付ごとに整理できます。オプションの24時間ディレクトリは、各ディレクトリのデータ量を減らします。注釈
S3は、Snowflakeが使用する COPY ステートメントごとにディレクトリリストを送信するため、各ディレクトリ内のファイル数を減らすと、 COPY ステートメントのパフォーマンスが向上します。1時間ごとに10~15分単位のフォルダーを作成することも検討できます。
S3バケットで提供されるサンプルデータは、同様のパーティション分割スキームを使用します。COPY コマンドで、イベントデータをコピーする特定のフォルダーパスを指定します。
データベース、テーブル、ウェアハウス、および外部ステージの作成¶
次のステートメントを実行して、このチュートリアルに必要なデータベース、テーブル、仮想ウェアハウス、および外部ステージを作成します。チュートリアルの完了後に、これらのオブジェクトをドロップできます。
CREATE OR REPLACE DATABASE mydatabase; USE SCHEMA mydatabase.public; CREATE OR REPLACE TABLE raw_source ( SRC VARIANT); CREATE OR REPLACE WAREHOUSE mywarehouse WITH WAREHOUSE_SIZE='X-SMALL' AUTO_SUSPEND = 120 AUTO_RESUME = TRUE INITIALLY_SUSPENDED=TRUE; USE WAREHOUSE mywarehouse; CREATE OR REPLACE STAGE my_stage URL = 's3://snowflake-docs/tutorials/json';
次に注意してください。
CREATE DATABASE
ステートメントはデータベースを作成します。データベースには、「public」という名前のスキーマが自動的に含まれます。USE SCHEMA
ステートメントは、現在のユーザーセッションのアクティブなデータベースとスキーマを指定します。データベースの指定により、リクエストされるたびに名前を指定しなくても、このデータベースで作業を実行できるようになりました。CREATE TABLE
ステートメントは、 JSON データのターゲットテーブルを作成します。CREATE WAREHOUSE
ステートメントは、中断された初期状態のウェアハウスを作成します。このステートメントは AUTO_RESUME = true も設定します。これにより、コンピューティングリソースを必要とする SQL ステートメントを実行すると、ウェアハウスが自動的に開始されます。USE WAREHOUSE
ステートメントは、作成したウェアハウスを現在のユーザーセッションのアクティブなウェアハウスとして指定します。CREATE STAGE
ステートメントは、このチュートリアルのサンプルファイルを含むS3バケットをポイントする外部ステージを作成します。