■ はじめに
https://dk521123.hatenablog.com/entry/2021/11/02/130111
https://dk521123.hatenablog.com/entry/2021/11/22/212520
の続き。 Snowflake の特徴の一つでもある「ゼロ コピー クローン」について扱う。
目次
【1】ゼロコピークローン 【2】構文 【3】サンプル
【1】ゼロコピークローン(Zero-copy Cloning)
* Snowflake は、「論理テーブル(メタ情報)」と「物理ストレージ」が分離されている => Cloneの場合、データが物理的にはコピーされず、同じデータを参照 => 物理的にはコピーされないので、めっちゃ早い(だから「ゼロコピー」)
動画
* イメージしづらい場合、以下の動画を見てみるといいかも。
https://www.youtube.com/watch?v=yQIMmXg7Seg
【2】構文
https://docs.snowflake.com/ja/sql-reference/sql/create-clone.html
CREATE [ OR REPLACE ] { DATABASE | SCHEMA | TABLE | STREAM } [ IF NOT EXISTS ] <object_name> CLONE <source_object_name> ... -- テーブルをクローンする場合 -- CREATE TABLE 【クローンのテーブル名】 CLONE 【クローンの元となるテーブル】; CREATE TABLE clone_table CLONE source_table;
【3】サンプル
-- 使用するロール/ウェアハウスを指定 USE ROLE sysadmin; USE WAREHOUSE compute_wh; -- 専用のDBを作成 CREATE DATABASE demo_bank; -- 使用するDB/Schemaを指定 USE DATABASE demo_bank; USE SCHEMA public; -- データロード用のテーブルを用意 CREATE OR REPLACE TABLE demo_trips (tripduration integer, starttime timestamp, stoptime timestamp, start_station_id integer, start_station_name string, start_station_latitude float, start_station_longitude float, end_station_id string, end_station_name string, end_station_latitude string, end_station_longitude string, bikeid integer, membership_type string, usertype string, birth_year string, gender integer); -- ロード用のステージを作成 CREATE STAGE demo_stage URL = 's3://snowflake-workshop-lab/citibike-trips/'; -- データファイルの一覧表示 LIST @demo_stage; -- データロード COPY INTO demo_trips FROM @demo_stage FILE_FORMAT = ( TYPE=CSV, FIELD_OPTIONALLY_ENCLOSED_BY = '"', EMPTY_FIELD_AS_NULL = TRUE, ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE ); -- ★ここ★ CREATE TABLE clone_trips CLONE demo_trips;
参考文献
https://dev.classmethod.jp/articles/snowflake-advent-calendar-2019-24/
https://www.intage-ts.com/entry/2020/12/21/145500
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ データロード / COPY INTO ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ テーブルの簡易バックアップを考える ~
https://dk521123.hatenablog.com/entry/2022/11/07/224328