DROP ICEBERG TABLE

現在/指定のスキーマから Apache Iceberg™テーブル を削除しますが、 UNDROP ICEBERG TABLE を使用して復元できるように、Icebergテーブルのバージョンを保持します。詳細については、 使用上の注意 (このトピック内)をご参照ください。

このトピックでは、 Iceberg tables と指定することで混乱を避ける場合を除き、Icebergテーブルを単に「テーブル」と呼ぶことに注意してください。

こちらもご参照ください。

CREATE ICEBERG TABLE , SHOW ICEBERG TABLES , UNDROP ICEBERG TABLE

構文

DROP [ ICEBERG ] TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Copy

パラメーター

name

ドロップするテーブルの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例えば、 "My Object")。

テーブル識別子が完全修飾されていない場合(db_name.schema_name.table_name または schema_name.table_name の形式)、コマンドは、セッションの現在のスキーマにあるテーブルを探します。

CASCADE | RESTRICT

テーブルを参照する外部キーが存在する場合、テーブルをドロップできるかどうかを指定します。

  • CASCADE は、テーブルに他のテーブルの外部キーによって参照されるプライマリ/一意キーがある場合でも、テーブルをドロップします。

  • RESTRICT は既存の外部キー参照に関する警告を返し、テーブルをドロップしません。

デフォルト: CASCADE

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

OWNERSHIP

Icebergテーブル

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

USAGE

外部ボリューム

USAGE

統合(カタログ)

Icebergテーブルが外部カタログを使用する場合は必要です。

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • :doc:`書き込みが有効な外部管理Icebergテーブル </user-guide/tables-iceberg-externally-managed-writes>`に対して、Snowflakeは外部Iceberg REST テーブルにもテーブルをドロップするよう指示します。SnowflakeはリモートのIcebergカタログに対して呼び出しを行い、テーブルをドロップしてテーブルの基になるデータとメタデータを削除するように指示します。

    Snowflakeは、テーブルがリモートカタログから正常に削除されたことを確認した後にのみ、テーブルを削除します。

    注釈

    外部カタログとして AWS Glue データカタログを使用している場合、Snowflakeを介して外部管理テーブルを削除しても、基になるテーブルファイルは削除されません。この動作は、AWS Glueデータカタログ実装に固有のものです。

  • テーブルをドロップしても、システムから永久に削除されるわけではありません。Snowflakeは、ドロップされたテーブルのバージョンをテーブルの DATA_RETENTION_TIME_IN_DAYS パラメーターで指定された日数の間、 Time Travel に保持します。詳細については、 Icebergテーブルのメタデータおよびスナップショット をご参照ください。

  • Time Travelの保持期間内であれば、 UNDROP ICEBERG TABLE コマンドを使用して、ドロップしたテーブルを復元できます。

  • ドロップされたテーブルがパージされると、復元できません。再作成する必要があります。

  • テーブルをドロップした後、同じ名前のテーブルを作成すると、新しいバージョンのテーブルが作成されます。以下のステップに従うと、以前のテーブルのドロップされたバージョンを復元できます。

    1. 現在のバージョンのテーブルの名前を別の名前に変更します。

    2. UNDROP ICEBERG TABLE コマンドを使用して、以前のバージョンを復元します。

  • テーブルをドロップする前に、テーブルを参照するビューが ない ことを確認してください。ビューが参照するテーブルをドロップすると、ビューが無効になります(ビューをクエリすると「オブジェクトが存在しません」というエラーが返されます)。

  • IF EXISTS 句が指定されており、ターゲットオブジェクトが存在しない場合、コマンドはエラーを返さずに正常に完了します。

テーブルをドロップします。

DROP ICEBERG TABLE t2;

+--------------------------+
| status                   |
|--------------------------|
| T2 successfully dropped. |
+--------------------------+
Copy

テーブルを再度ドロップしますが、テーブルが存在しない場合でもエラーは発生しません。

DROP ICEBERG TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+
Copy