ALTER ICEBERG TABLE ... REFRESH¶
外部Icebergカタログを使用する Apache Iceberg™ テーブル のメタデータをリフレッシュします。Icebergテーブルは、テーブルメタデータと最新のテーブル変更を同期します。
このトピックでは、 Iceberg tables と指定することで混乱を避ける場合を除き、Icebergテーブルを単に「テーブル」と呼びます。
構文¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> REFRESH [ '<metadata_file_relative_path>' ]
パラメーター¶
table_name
リフレックスするテーブルの識別子。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
'metadata_file_relative_path'
オブジェクトストレージ内の Iceberg ファイルから作成されたテーブルのメタデータファイルパスを指定します。パスは、テーブルに関連付けられている外部ボリュームの アクティブなストレージの場所 からの相対パスにする必要があります。
次のテーブルは、ストレージの場所の例に基づいて指定する値を示しています。
テーブルの外部ボリュームのアクティブなストレージの場所
s3://mybucket_us_east_1
メタデータファイルへのフルパス
s3://mybucket_us_east_1/metadata/v1.metadata.json
'metadata_file_relative_path'
として指定する値metadata/v1.metadata.json
(先頭のスラッシュなし)注釈
テーブルがカタログとして AWS Glueを使用している場合は、メタデータファイルのパスを指定しないでください。
メタデータファイルパスの先頭のスラッシュ(
/
)を省略します。Snowflakeのバージョン7.34以前では、オブジェクトストレージ内のIcebergファイルからテーブルを作成するには
BASE_LOCATION
(以前のバージョンでの別称はFILE_PATH
)というパラメーターが必要でした。パラメーターは、EXTERNAL_VOLUME
の場所からの相対パスを指定しました。古い構文を使用して作成したテーブルをリフレッシュするには、
BASE_LOCATION
への相対パスを指定します。例えば、メタデータファイルのフルパスがs3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
の場合、metadata/v1.metadata.json
をmetadata-file-relative-path
として指定します。
アクセス制御の要件¶
この 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 権限を持つロール)以上のみです。
トランザクション内(暗黙的または明示的)での ALTER ICEBERG TABLE ... REFRESH コマンドの使用はサポートされていません。
CREATE と ALTER ... REFRESH の間のリフレッシュ操作は、1回の操作につき最大1,000個のDelta コミット・ファイルを処理することができます。
注釈
SnowflakeはIcebergテーブルを作成する際にDeltaチェックポイントファイルを使用します。1,000コミットファイルの制限は、最新のチェックポイント以降のコミットにのみ適用されます。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
テーブルをリフレッシュする¶
この例では、以下のシナリオでテーブルのメタデータを手動でリフレッシュします。
この表は、Iceberg のカタログ用に AWS Glue を使用しています。
このテーブルは、オブジェクト・ストレージのDelta・テーブル・ファイルに基づいています。
これらのシナリオでは、refreshコマンドでメタデータ・ファイルのパスを指定しません。
ALTER ICEBERG TABLE myIcebergTable REFRESH;
オブジェクトストレージ内のIcebergファイルから作成されたテーブルのリフレッシュ¶
この例では、新しいメタデータファイルの変更に基づいてテーブルメタデータを手動で更新します。この例では、メタデータファイルへのフルパスは <external-volume-storage-base-url>/path/to/metadata/v2.metadata.json
です。
メタデータファイルを指定する場合は、メタデータファイルのパスに先頭のスラッシュ(/
)を含めません。
ALTER ICEBERG TABLE my_iceberg_table REFRESH 'path/to/metadata/v2.metadata.json';
注釈
Snowflakeのバージョン7.34以前では、オブジェクトストレージ内のIcebergファイルからテーブルを作成するには BASE_LOCATION
(以前のバージョンでの別称は FILE_PATH
)というパラメーターが必要でした。パラメーターは、 EXTERNAL_VOLUME
の場所からの相対パスを指定しました。
古い構文を使用して作成したテーブルをリフレッシュするには、 BASE_LOCATION
への相対パスを指定します。例えば、メタデータファイルのフルパスが s3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
の場合、 metadata/v1.metadata.json
を metadata-file-relative-path
として指定します。