背景・目的
Unity Catalog support for UNDROP TABLE is GAにあるように、GAが発表されましたが、そもそも、このような機能を知りませんでした。このタイミングで簡単に試してみます。
まとめ
- Unity Catalog内のマネージドテーブルと外部テーブルを対象にリカバリが可能
- 対象期間は7日間
- メタ情報も戻せるが、権限は戻せない。
概要
UNDROP TABLE
Databricksのドキュメントにある UNDROP TABLE を元に整理します。
UNDROP コマンドは、 Unity Catalog にあるマネージ テーブルまたは外部テーブルが誤って削除または削除されるという問題に対処します。 デフォルトでは、このコマンドは、指定されたテーブル名のユーザーが所有する最後にドロップされたテーブルをアンドロップ (リカバリ) します。 親スキーマとカタログが存在する必要があります。 この機能は、7 日間の保持期間内に削除されたテーブルを回復することをサポートします。
- 対象は、Unity Catalog内のマネージドテーブルと外部テーブル
- 対象期間は、7日間
- 親のスキーマとカタログがあること
同じ名前のドロップされたテーブルが複数ある場合は、 SHOW TABLES DROP を使用してテーブル ID を識別し、 UNDROP TABLE WITH ID を使用して特定のテーブルを復旧できます。
- SHOW TABLES DROPで、テーブルIDが確認できる
リカバリするテーブルと同じ名前のテーブルがある場合は、 ALTER TABLE RENAME TO コマンドを使用して既存のテーブルの名前を変更します。
テーブル権限、列仕様、プロパティなどのテーブルメタデータがリカバリされます。 主キー制約と外部キー制約は、 UNDROP コマンドでは回復されません。 表がリカバリーされた後、 ALTER TABLE ADD CONSTRAINT を使用して手動で再作成します。
- テーブルのメタデータもリカバリされる
- 権限(主キー制約と外部キー制約)はリカバリされないので注意が必要
構文
下記のクエリを実行します。
UNDROP TABLE { table_name | WITH ID table_id }
実践
こちらのドキュメントを元に試してみます。
前提
カタログとスキーマの作成
事前に、カタログとスキーマを作成します。
-
カタログを作成します。
CREATE CATALOG my_catalog SHOW CATALOGS
-
スキーマを作成します。
CREATE SCHEMA my_catalog.my_schema SHOW SCHEMAS IN my_catalog
UNDROP using the table name
-
テーブルを作成します。作成されました。
CREATE TABLE my_catalog.my_schema.my_table (id INT, name STRING); SHOW TABLES IN my_catalog.my_schema
-
テーブルを削除します。削除されました。
DROP TABLE my_catalog.my_schema.my_table SHOW TABLES IN my_catalog.my_schema
-
リカバリします。(UNDROPします。)戻りました。
UNDROP TABLE my_catalog.my_schema.my_table; SHOW TABLES IN my_catalog.my_schema
UNDROP WITH ID
-
テーブルを削除します。消えました。
DROP TABLE my_catalog.my_schema.my_table SHOW TABLES IN my_catalog.my_schema
-
削除済みのテーブルを確認します。tableidをメモします。
SHOW TABLES DROPPED IN my_catalog.my_schema;
-
下記のクエリを実行し、リカバリします。戻りました。
UNDROP TABLE WITH ID '{tableid}' SHOW TABLES IN my_catalog.my_schema
考察
UNDROPテーブルにより、誤って削除したテーブルが戻せることを試しました。
参考