ゼロコピークローンとタイムトラベル:Snowflake社内勉強会レポート

ゼロコピークローンとタイムトラベル:Snowflake社内勉強会レポート | Tableau-id Press -タブロイド-
snowflake-logo-1200x630-960x504-1

勉強会の目的

Snowflakeの基礎的な概念や機能を身に着ける

今回のトピックとゴール

・ゼロコピークローンを作る方法を学ぶ

・ゼロコピークローンの特徴や利点を整理する

・タイムトラベルの方法を学ぶ

実施内容

教材:公式ハンズオン

https://quickstarts.snowflake.com/guide/tasty_bytes_zero_to_snowflake_transformation/#0

使用したデータ:公式ハンズオン提供データ

https://quickstarts.snowflake.com/guide/tasty_bytes_introduction/index.html#0

ポイント

・クローンを作成:クエリ例(truckテーブルをクローンして、truck_devというテーブルを作る)

CREATE OR REPLACE TABLE raw_pos.truck_dev CLONE raw_pos.truck;

・クローンはコンピューティングリソースを使用しないため、ウェアハウスを選択しなくても実行可能

・クローンはストレージを使用しない

・クローンしたテーブルを編集しても、元のテーブルに影響はない(本当にスナップショットのようにコピーでき、開発環境として使用できる)

・開発環境を本番環境にマージしたい場合は、ALTER TABLE… SWAP WITH を使う
⇒名前が入れ替わるので、開発用のテーブル と 本番テーブルを入れ替えることができる(入れ替えた後、不要な方はDROPする)

https://docs.snowflake.com/en/sql-reference/sql/alter-table?_fsi=ZRBLYsxF&_fsi=ZRBLYsxF

・タイムトラベルで遡り可能:クエリ例(raw_pos.truck_devテーブルを、指定したクエリidを実行する前に戻す)

CREATE OR REPLACE TABLE raw_pos.truck_dev
AS
SELECT * FROM raw_pos.truck_dev
BEFORE(STATEMENT => $query_id);

⇒TIMESTAMPで、ある日付時点に戻る/ OFFSETで特定の秒数遡る/ STATEMENTでクエリIDを指定してそのクエリの前に戻る

https://docs.snowflake.com/en/sql-reference/constructs/at-before

その他TIPS

・同じデータ、同じクエリであれば結果クエリキャッシュが使用できる(24時間)

https://docs.snowflake.com/ja/user-guide/querying-persisted-results

・カラムの追加等、テーブル変更はオーナーシップのあるロールでないと実行できない

https://docs.snowflake.com/ja/sql-reference/sql/alter-table#usage-notes

ALTER TABLE raw_pos.truck_dev
ADD COLUMN truck_type VARCHAR(100);