🔖
Snowflakeでステージ作成からデータの取り込みまで
仕事でSnowflake案件に携わりそうでSnowPro Coreの取得がてらの勉強アウトプットになります。
参考にしている教材
一括ローディング
またの名をバルクローディングと言います。
イメージとしては外部ストレージ(AWSのS3とか)からSnowflake上のテーブルにデータを取り込みます。
データベースの作成
今回はMANAGE_DBというデータベースを作成します。
CREATE OR REPLACE DATABASE MANAGE_DB;
スキーマの作成
MANAGE_DB内にexternal_stagesというスキーマを作成します。
CREATE OR REPLACE SCHEMA MANAGE_DB.external_stages;
外部ステージの作成
※実際のUdemy講義内でS3の資格情報が記載されており、その情報がないと参照できないです。
CREATE OR REPLACE STAGE MANAGE_DB.external_stages.aws_stage
url='s3://bucketsnowflakes3';
S3のバケットの中身を確認してみる
LIST @aws_stage;
or
LIST @MANAGE_DB.external_stages.aws_stage;
aws_stage内には3つのファイルがあることがわかります。
テーブルの作成
S3のデータをロードするためのテーブルを作成します。
CREATE OR REPLACE TABLE OUR_FIRST_DB.PUBLIC.ORDERS (
ORDER_ID VARCHAR(30),
AMOUNT INT,
PROFIT INT,
QUANTITY INT,
CATEGORY VARCHAR(30),
SUBCATEGORY VARCHAR(30));
COPYコマンドでロードする
コマンド解説
COPY INTO [ロード先のテーブル名]
FROM @[外部ステージ名]
file_format = [(ファイルタイプの指定 区切り文字の指定 ヘッダーをスキップ)]
files = [(S3にあるCSVファイル名の指定)]
COPY INTO OUR_FIRST_DB.PUBLIC.ORDERS
FROM @MANAGE_DB.external_stages.aws_stage
file_format= (type = csv field_delimiter=',' skip_header=1)
files = ('OrderDetails.csv');
COPYコマンド結果の確認
確認項目
- statusがLOADEDであること
- rows_parsedとrows_loadedが同じ値であること
- error_seenが0であること
SELECT文での確認
SELECT * FROM OUR_FIRST_DB.PUBLIC.ORDERS;
補足
COPYコマンドのオプションのfilesで正規表現でファイル指定することも可能
COPY INTO OUR_FIRST_DB.PUBLIC.ORDERS
FROM @MANAGE_DB.external_stages.aws_stage
file_format= (type = csv field_delimiter=',' skip_header=1)
pattern='.*Order.*';
以上で外部ステージからのデータロードは完了です。
Discussion