ALTER STORAGE LIFECYCLE POLICY¶
既存の ストレージライフサイクルポリシー のプロパティを変更します。
注意
ストレージライフサイクルポリシーの変更は、関連付けられたすべてのテーブルに大きな影響を与える可能性があります。ACCOUNT_USAGE スキーマの QUERY_HISTORY ビューを使用して、ポリシーの変更を定期的に監査します。詳細については、 QUERY_HISTORY ビュー をご参照ください。
- こちらもご参照ください。
CREATE STORAGE LIFECYCLE POLICY、 DESCRIBE STORAGE LIFECYCLE POLICY、 DROP STORAGE LIFECYCLE POLICY、 SHOW STORAGE LIFECYCLE POLICIES
構文¶
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> SET
BODY -> <expression_on_arg_name>
| ARCHIVE_TIER = { COOL | COLD }
| ARCHIVE_FOR_DAYS = <number_of_days>
| COMMENT = '<string_literal>'
| TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> UNSET
ARCHIVE_FOR_DAYS
| COMMENT
| TAG <tag_name> [ , <tag_name> ... ]
パラメーター¶
name変更するポリシーの識別子を指定します。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
RENAME TO new_nameポリシーの新しい識別子を指定します。スキーマに対して一意にする必要があります。
詳細については、 識別子の要件 をご参照ください。
オプションでオブジェクトの名前を変更して、オブジェクトを別のデータベースやスキーマに移動できます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ
db_name.schema_name.object_nameまたはschema_name.object_nameの形式で含む、修飾されたnew_name値を指定します。注釈
宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。
オブジェクトを管理アクセススキーマに移動することは、オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き 禁止されています。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SET ...ポリシーに設定する1つ以上のプロパティを指定します。
BODY -> expression_on_arg_name期限切れにする行を決定する SQL 式。
データの変換には、 条件式関数 または ユーザー定義関数 (UDFs)などの組み込み関数を使用できます。
注釈
現在、ストレージライフサイクルポリシーの本文では SQL および JavaScript UDFs のみがサポートされています。
ARCHIVE_TIER = { COOL | COLD }有効期限ポリシーをアーカイブポリシーに変換する、ARCHIVE_FOR_DAYS が設定解除されているストレージティアを指定します。
COOLでは、90日以上のアーカイブ期間(ARCHIVE_FOR_DAYS)を設定する必要があります。COLDでは、180日以上のアーカイブ期間(ARCHIVE_FOR_DAYS)を設定する必要があります。
ARCHIVE_FOR_DAYS = number_of_daysポリシー式と一致した行をアーカイブストレージに保持する日数を指定します。設定すると、Snowflakeは ARCHIVE_TIER で選択した値に従って、データをアーカイブストレージに移動します。未設定の場合、Snowflakeはデータをアーカイブせずにテーブルの行を期限切れにします。
値:
ARCHIVE_TIER = COOL:
90-2147483647ARCHIVE_TIER = COLD:
180-2147483647
デフォルト: 未設定
COMMENT = 'string_literal'ポリシーのコメントを追加するか、既存のコメントを上書きします。
デフォルト: 値なし
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 Tag quotas をご参照ください。
UNSET ...ポリシーの設定を解除するプロパティを指定します。これにより、プロパティはデフォルトにリセットされます。
ARCHIVE_FOR_DAYSCOMMENTTAG tag_name [ , tag_name ... ]
1つの ALTER ステートメントで複数のプロパティまたはパラメーターの設定を解除するには、各プロパティまたはパラメーターをコンマで区切ります。
プロパティまたはパラメーターの設定を解除する場合は、プロパティ名またはパラメーター名のみを指定します(上記の構文で値を指定するように指示されている場合を除く)。値を指定するとエラーが返されます。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
|---|---|---|
OWNERSHIP |
ストレージライフサイクルポリシー |
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). |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
既存のポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE STORAGE LIFECYCLE POLICY コマンドを実行します。
このコマンドでポリシー署名を変更することはできません。署名を変更するには、 DROP STORAGE LIFECYCLE POLICY コマンドを使用してから新しいポリシーを作成します。
ARCHIVE_TIER を設定した後は、ポリシーを変更できません。たとえば、このコマンドを使用してポリシーの ARCHIVE_TIER を COOL から COLD に変更することはできません。
ポリシーの ARCHIVE_FOR_DAYS を設定解除した場合ストレージティアは変更されません。後でポリシーのアーカイブストレージを再度有効にした場合、ストレージティアを変更することはできません。
ポリシー本体に1つ以上の サブクエリ を含めると、エラーが発生する可能性があります。可能であれば、サブクエリの数を制限し、 JOIN 操作の数を制限し、 WHERE 句の条件を単純化します。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
次の例では、閉じたアカウントを30日後に期限切れにするようにストレージライフサイクルポリシーを更新します。
ALTER STORAGE LIFECYCLE POLICY expire_storage_for_closed_accounts
SET BODY ->
event_ts < DATEADD(DAY, -30, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
);