ALTER ICEBERG TABLE ... CONVERT TO MANAGED¶
外部Icebergカタログを使用する Apache Iceberg™テーブル を、Snowflakeをカタログとして使用するテーブル(Snowflake管理Icebergテーブル)に変換します。
変換されたテーブルは、読み取りと書き込みの両方の操作をサポートし、Snowflakeはコンパクションなどのテーブルのすべてのライフサイクルメンテナンスを処理します。詳細については、 テーブル変換前と変換後 をご参照ください。
構文¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> CONVERT TO MANAGED
[ BASE_LOCATION = '<directory_for_table_files>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
パラメーター¶
table_name
変換するテーブルの識別子。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
[ BASE_LOCATION = 'directory_for_table_files' ]
Snowflakeがテーブルのデータファイルとメタデータファイルを書き込めるディレクトリへのパス。テーブルの
EXTERNAL_VOLUME
位置からの相対パスを指定します。詳細については、 データとメタデータのディレクトリ をご参照ください。元の CREATE ICEBERG TABLE ステートメントが
BASE_LOCATION
を許可していなかったり、含んでいなかったりする場合は、このプロパティの値を指定する必要があります。テーブルを変換した後に、このディレクトリを変更することはできません。
STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }
テーブルのストレージシリアル化ポリシーを指定します。変換時に指定されなかった場合、テーブルはスキーマ、データベース、またはアカウントレベルで設定された値を継承します。どのレベルでも値が指定されていない場合、テーブルではデフォルト値が使用されます。
テーブルを変換した後に、このパラメーターの値を変更することはできません。
COMPATIBLE
: Snowflakeは、サードパーティのコンピューティングエンジンとの相互運用性を実現するエンコードと圧縮を実行します。OPTIMIZED
: Snowflakeは、Snowflake内で優れたテーブルパフォーマンスを実現するエンコードと圧縮を実行します。
デフォルト:
OPTIMIZED
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
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 |
カタログ統合 |
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
このコマンドを実行できるのは、テーブルの所有者(つまり、テーブルに対する OWNERSHIP 権限を持つロール)以上のみです。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
次の例では ALTER ICEBERG TABLE ... CONVERT TO MANAGED ステートメントを使用して、Snowflakeが管理していないテーブルをIcebergカタログとしてSnowflakeを使用するテーブルに変換します。
ALTER ICEBERG TABLE myTable CONVERT TO MANAGED
BASE_LOCATION = 'my/relative/path/from/external_volume';