ステージと半構造化データ
ステージオブジェクトの作成
Amazon S3バケットに対するステージを作成する.
ステージの作成手順
- SnowsightでUTIL_DBデータベースのPUBLICスキーマを選択する.
- 作成ボタンをクリックし,外部ステージ > Amazon S3を選択する.
-
ステージ名に
like_a_window_into_an_s3_bucket
と入力する. -
URLには
s3://uni-lab-files
を指定する. - ディレクトリテーブルオプションを有効化したままにする.
- 作成ボタンをクリックしてステージを作成する.
作成後,ステージ上のファイルがSnowsightで確認できるようになる.
LISTコマンドの利用
LIST
コマンドを使用してステージ内のファイルを確認する.ステージ名を参照する際は@
を先頭に付ける.
USE SCHEMA UTIL_DB.PUBLIC;
LIST @like_a_window_into_an_s3_bucket;
Snowflakeの命名規則
- Snowflakeは大文字/小文字を区別しない.オブジェクト名は大文字に変換される.
- Amazon S3では大文字小文字を正確に区別する必要がある.
COPY INTO文によるデータロード
テーブルの作成
USE SCHEMA GARDEN_PLANTS.VEGGIES;
CREATE OR REPLACE TABLE vegetable_details_soil_type (
plant_name VARCHAR(25),
soil_type NUMBER(1,0)
);
データのロード
以下のSQLを使用して,ステージ内のデータをテーブルにロードする.
ファイルはSnowflakeが提供しているウェブコンテンツBadge 1: Data Warehousing Workshopからダウンロードする.
COPY INTO vegetable_details_soil_type
FROM @util_db.public.like_a_window_into_an_s3_bucket
FILES = ('VEG_NAME_TO_SOIL_TYPE_PIPE.txt')
FILE_FORMAT = (
TYPE = csv,
FIELD_DELIMITER = '|',
SKIP_HEADER = 1
);
LU_SOIL_TYPEテーブルの作成とデータロード
以下のスキーマを使用して新しいテーブルを作成し,データをロードする.
ファイルはSnowflakeが提供しているウェブコンテンツBadge 1: Data Warehousing Workshopからダウンロードする.
CREATE OR REPLACE TABLE lu_soil_type (
soil_type_id NUMBER,
soil_type VARCHAR(15),
soil_description VARCHAR(75)
);
-
FIELD_DELIMITER: タブ区切りの場合は
'\t'
を指定する.
COPY INTO lu_soil_type
FROM @util_db.public.like_a_window_into_an_s3_bucket
FILES = ('LU_SOIL_TYPE.tsv')
FILE_FORMAT = (
TYPE = csv,
FIELD_DELIMITER = '\t',
SKIP_HEADER = 1
);
半構造化データの取り扱い
VARIANT
データ型
VARIANT
は,階層構造や入れ子構造を持つ半構造化データを格納するためのデータ型である.以下の例では,VARIANT
列を持つテーブルを作成する.
CREATE OR REPLACE TABLE GARDEN_PLANTS.VEGGIES.VEGETABLE_DETAILS_PLANT_HEIGHT (
record VARIANT
);
JSONデータのロード
以下のCOPY INTO
文を使用して,JSONファイルをロードする.
ファイルはSnowflakeが提供しているウェブコンテンツBadge 1: Data Warehousing Workshopからダウンロードする.
COPY INTO vegetable_details_plant_height
FROM @common_db.resources.course_files/veg_plant_height.json
FILE_FORMAT = (TYPE = 'JSON');
ロードしたデータのクエリ
VARIANT
データ型に格納されたデータをクエリするために特別な演算子や関数を使用する.