Slide 1

Slide 1 text

Snowflakeでやらかした時の対処法 DATUM STUDIO株式会社 向井 雄⼆

Slide 2

Slide 2 text

© 2023 DATUM STUDIO Co. Ltd. whoami select * from employnee where name = ʻ向井 雄⼆ʼ 向井 雄⼆ DATUM STUDIO データエンジニア データ分析基盤構築(受託) @ugmuka name company role job twitter

Slide 3

Slide 3 text

© 2023 DATUM STUDIO Co. Ltd. こんなことありませんか︖ 本番環境で〇〇やっちゃいました︕

Slide 4

Slide 4 text

© 2023 DATUM STUDIO Co. Ltd. 魔法の呪⽂ timetravelを使うのじゃ

Slide 5

Slide 5 text

© 2023 DATUM STUDIO Co. Ltd. 1.undrop編 2.clone編

Slide 6

Slide 6 text

© 2023 DATUM STUDIO Co. Ltd. 1.undrop編 2.clone編

Slide 7

Slide 7 text

© 2023 DATUM STUDIO Co. Ltd. undropできるもの、できないもの undropが簡易なオブジェクト ü database ü schema ü table iacツールなどを使っても再作成が困難なオブジェクト ü integration⼀式 • 内部パラメータが変わるため、IFごと再構築が必要 • aws iamはterraform対応しているが、Tableauのconnection設定などは⼿動で再設定しないといけない︕

Slide 8

Slide 8 text

© 2023 DATUM STUDIO Co. Ltd. 1.undrop編 2.clone編

Slide 9

Slide 9 text

© 2023 DATUM STUDIO Co. Ltd. ⼀般的な巻き戻し⼿順 clone&swapで巻き戻しをしよう schema A schema B schema Aʼ ユーザー ①︓cloneで事故前の schemaをclone ②︓swapでschema AとA‘を⼊れ替える 事故発⽣

Slide 10

Slide 10 text

© 2023 DATUM STUDIO Co. Ltd. そのswap、本当に⼤丈夫︖ schema A schema B schema Aʼ ユーザー ①︓cloneで事故前の schemaをclone ②︓swapでschema AとA‘を⼊れ替える 事故発⽣ cloneは本当にすべてのオブジェ クトをコピーする︖ スキーマを跨いで参照しているオブジェクト(ビューなど)は swapすると正しい挙動を⽰す︖

Slide 11

Slide 11 text

© 2023 DATUM STUDIO Co. Ltd. cloneされないオブジェクト 以下のオブジェクトはcloneされないので、頑張って再作成する ü external table ü internal stage schema A schema B schema Aʼ ユーザー ①︓cloneで事故前の schemaをclone ②︓swapでschema AとA‘を⼊れ替える 事故発⽣ ある ない

Slide 12

Slide 12 text

© 2023 DATUM STUDIO Co. Ltd. 参照がおかしくなるオブジェクト オブジェクトによっては、swapによって参照がおかしくなる場合がある schema A schema B schema Aʼ ユーザー ②︓swapでschema AとA‘を⼊れ替える 事故発⽣ ①︓cloneで事故前の schemaをclone × table materialized view masking policy table △ 参照エラーとなる 参照エラーとなる場合がある (クリーンな環境では再現できず)

Slide 13

Slide 13 text

© 2023 DATUM STUDIO Co. Ltd. Snowflakeの参照について オブジェクト名称をそのまま使うもの、IDベースのものの2種類がある ※ https://docs.snowflake.com/ja/user-guide/database-replication-considerations#dangling-references ビュー マテリアライズドビュー 外部キー制約 テーブル マスキングポリシー ⾏アクセスポリシー タグ テーブル テーブル 列 シーケンス テーブル テーブル オブジェクト 名前ベース IDベース IDベース IDベース IDベース IDベース IDベース オブジェクト 参照先 参照形式

Slide 14

Slide 14 text

© 2023 DATUM STUDIO Co. Ltd. まとめ ミスった時はtimetravelをガンガン使おう ü undrop • 復元できないオブジェクトがある ü clone & swap • cloneされないオブジェクトがある • swap後の環境ではエラーが起きる可能性がある • それぞれのオブジェクトで名前参照の形式が異なる