今回の課題
AWSのS3に格納しているtsv
形式のファイルを使って、
Snowflakeにてテーブルを作成する流れを理解したい。
実装する流れ
tsv
形式のファイルでSnowflakeにテーブルを作成する流れを簡単にまとめる。
1)S3バケットを指し示すステージを作成する
外部ストレージのファイルからSnowflakeのテーブルにデータをロードしたり、
テーブルから外部ストレージにデータをアンロードするためのステージを作成しておく。
create stage [database名].[schema名].[S3のbucket名]
url = 's3://******' -- S3のURL名
;
2)S3にあるファイルを確認してみる
ワークシートにて下記を実行する。
list @[database名].[schema名].[S3のbucket名];
結果、ファイル名,ファイルのサイズ,MD5のハッシュ,最終更新日が出力される。
抽出したいファイル名などを確認することができる。
3)外部ステージのファイルをクエリする。
ワークシートにて、下記のようなクエリを実行することで、
外部ストレージのファイルに対してクエリを実行してデータを抽出することができる。
ファイルにどんなデータが格納されているか事前に確認することができる。
select
$1 -- ファイルの1列目
, $2 -- ファイルの2列目
from
@[database名].[schema名].[bucket名]/[ファイル名(例:「〜.tsv」)] -- クエリしたいファイルを指定
;
4)外部ストレージのファイルのデータを格納するテーブルを作っておく
下記のクエリを実行して、Snowflake内に外部ストレージのデータを格納するテーブルを生成しておく。
create or replace table sample_table(
ID number, -- カラム名 データ型を指定している
NAME varchar(15)
);
5)読み込む外部ストレージのファイルの形式を指定しておく
外部ストレージから読み込むファイルがどんな形式でデータを保持しているのか、下記のクエリを実行することで指定しておく。
今回はtsv
形式のファイルなので、下記のように設定した。
create or replace file format sample_format
type = csv
field_delimiter = '\t' -- tab区切りの.tsvファイルを読み込むため
;
6)Snowflakeのテーブルに外部ストレージのデータを格納する
copy into sample_table
from @[database名].[schema名].[S3のbucket名]/[ファイル名(例:「〜.tsv」)]
file_format = sample_format -- 5)で指定したフォーマットを指定する
以上のような流れでクエリを実行して、
外部ストレージのファイルを使って、Snowflakeにテーブルを生成することができた。