SnowflakeのタグをUNDROPするとオブジェクトへのタグ付けも復元するか確かめてみた #SnowflakeDB

2022.12.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

※本エントリは、Snowflakeをもっと使いこなそう! Advent Calendar 2022の1日目の記事となります。

さがらです。

Snowflakeにはタグを用いて各オブジェクトにタグ付け出来る機能があるのですが、タグは基本的にオブジェクトに付与するものです。

ここで、タグ自体を削除したあとにそのタグを復元できるUNDROPコマンドがあるので、UNDROPコマンドを行ったら各オブジェクトへのタグ付けも復元するのか、確かめてみました。

事前準備

まず、以下のコマンドを実行し、タグ「undrop_test_tag」の作成と、作成したタグをデータベースSAGARA_RAWDATA_DBと、ウェアハウスSAGARA_DATALOAD_WHに付与します。

-- コンテキストの設定
use role sysadmin;
use database sagara_rawdata_db;

-- タグの作成
create tag undrop_test_tag;

-- 作成したタグの付与
alter database sagara_rawdata_db set tag undrop_test_tag = 'undrop_test_db';
alter warehouse sagara_dataload_wh set tag undrop_test_tag = 'undrop_test_wh';

タグがどのように付与されているかを確かめてみます。

-- 付与したタグの確認
select * from table(information_schema.tag_references('sagara_dataload_wh', 'warehouse'));
select * from table(information_schema.tag_references('sagara_rawdata_db', 'database'));

この状態で、タグ自体をDROPして削除しておきます。

-- 作成したタグの削除
drop tag undrop_test_tag;

-- 付与したタグの確認 ※タグの削除後
select * from table(information_schema.tag_references('sagara_dataload_wh', 'warehouse'));
select * from table(information_schema.tag_references('sagara_rawdata_db', 'database'));

UNDROPするとどうなるか

今回の検証目的であるタグのUNDROPを行うと、オブジェクトへのタグ付けは復元するのか、確認してみます。

UNDROPタグで復元してみます。

-- 削除したタグの復元
undrop tag undrop_test_tag;

上述のUNDROPコマンド後に付与したタグを確認してみると、無事にオブジェクトへのタグ付けも復元されていました!タグ自体を復元するだけでなく、付与まで復元してくれるのは素晴らしいですね~

-- 復元したタグの確認
select * from table(information_schema.tag_references('sagara_dataload_wh', 'warehouse'));
select * from table(information_schema.tag_references('sagara_rawdata_db', 'database'));

おまけ:公式Docの記述

実は今回検証した内容ですが、公式Docにはこのように書いてありました。

DROP TAG コマンドの実行時にタグが1つ以上のオブジェクトに割り当てられていた場合、 UNDROP コマンドはタグの割り当てをオブジェクトに復元します。詳細については、 オブジェクトおよび列のタグクォータ をご参照ください。

そのため、実は公式Docにはちゃんと記されていた仕様ではあったんです。

今回は自分の目で確かめて見たくて試してみました!実際に試してみて、挙動もわかったので納得です。