Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflakeでやらかした時の対処法

ugmuka
May 19, 2023
120

 Snowflakeでやらかした時の対処法

【オフライン限定】Snowflakeの小技LT〜ChatGPTも知らない?秘密のテクニック教えて!〜

https://usergroups.snowflake.com/events/details/snowflake-japan-presents-ohurainxian-ding-snowflakenoxiao-ji-lt-chatgptmozhi-ranaimi-mi-notekunitsukujiao-ete/

ugmuka

May 19, 2023
Tweet

Transcript

  1. © 2023 DATUM STUDIO Co. Ltd. whoami select * from

    employnee where name = ʻ向井 雄⼆ʼ 向井 雄⼆ DATUM STUDIO データエンジニア データ分析基盤構築(受託) @ugmuka name company role job twitter
  2. © 2023 DATUM STUDIO Co. Ltd. undropできるもの、できないもの undropが簡易なオブジェクト ü database

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

    schema B schema Aʼ ユーザー ①︓cloneで事故前の schemaをclone ②︓swapでschema AとA‘を⼊れ替える 事故発⽣
  4. © 2023 DATUM STUDIO Co. Ltd. そのswap、本当に⼤丈夫︖ schema A schema

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

    table ü internal stage schema A schema B schema Aʼ ユーザー ①︓cloneで事故前の schemaをclone ②︓swapでschema AとA‘を⼊れ替える 事故発⽣ ある ない
  6. © 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 △ 参照エラーとなる 参照エラーとなる場合がある (クリーンな環境では再現できず)
  7. © 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ベース オブジェクト 参照先 参照形式
  8. © 2023 DATUM STUDIO Co. Ltd. まとめ ミスった時はtimetravelをガンガン使おう ü undrop

    • 復元できないオブジェクトがある ü clone & swap • cloneされないオブジェクトがある • swap後の環境ではエラーが起きる可能性がある • それぞれのオブジェクトで名前参照の形式が異なる