勉強会の目的
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);