0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SnowflakeAdvent Calendar 2024

Day 17

ゼロから始めるSnowflake(9/10)

Posted at

ステージと半構造化データ

ステージオブジェクトの作成

Amazon S3バケットに対するステージを作成する.

ステージの作成手順

  1. SnowsightでUTIL_DBデータベースのPUBLICスキーマを選択する.
  2. 作成ボタンをクリックし,外部ステージ > Amazon S3を選択する.
  3. ステージ名like_a_window_into_an_s3_bucketと入力する.
  4. URLにはs3://uni-lab-filesを指定する.
  5. ディレクトリテーブルオプションを有効化したままにする.
  6. 作成ボタンをクリックしてステージを作成する.

作成後,ステージ上のファイルが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データ型に格納されたデータをクエリするために特別な演算子や関数を使用する.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?