CREATE STORAGE LIFECYCLE POLICY

現在または指定のスキーマに新しい ストレージライフサイクルポリシー を作成するか、既存のポリシーを置き換えます。ポリシーは、指定した引数に対して式を実行し、ポリシーが添付されているテーブルのどの行を期限切れにするかを決定します。ポリシーの引数は、テーブルの列を参照します。

ポリシーを作成したら、 ALTER TABLE コマンドを使用してテーブルにポリシーを追加します。

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

ALTER STORAGE LIFECYCLE POLICYDESCRIBE STORAGE LIFECYCLE POLICYDROP STORAGE LIFECYCLE POLICYSHOW STORAGE LIFECYCLE POLICIES

構文

CREATE [ OR REPLACE ] STORAGE LIFECYCLE POLICY [ IF NOT EXISTS ] <name>
  AS ( <arg_name> <arg_type> [ , ... ] )
  RETURNS BOOLEAN -> <body>
  [ ARCHIVE_TIER = { COOL | COLD } ]
  [ ARCHIVE_FOR_DAYS = <number_of_days> ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

必須パラメーター

name

ストレージライフサイクルポリシーの識別子を指定する文字列。これは、スキーマに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

AS ( arg_name arg_type [ , ... ] )

ポリシーの署名。署名には少なくとも1つの引数を含める必要があります。

署名は、行を期限切れにする準備が整っているかどうかを判断するために考慮する必要のある属性のセットを指定します。属性値は、データベースオブジェクト(テーブル)から取得されます。

RETURNS BOOLEAN -> body

ストレージライフサイクルポリシーはtrueまたはfalseと評価される必要があります。ストレージライフサイクルポリシーで保護されたテーブルをクエリするユーザーには、 body の記述方法に基づいて出力に行が表示されます。

body

Snowflakeが期限切れにする行を決定するために使用する SQL 式。

データの変換には、 条件式関数 または ユーザー定義関数 (UDFs)などの組み込み関数を使用できます。

注釈

現在、ストレージライフサイクルポリシーの本文では SQL および JavaScript UDFs のみがサポートされています。

オプションのパラメーター

ARCHIVE_TIER = { COOL | COLD }

行のアーカイブに使用するストレージティアのタイプを指定します。ポリシーの ARCHIVE_TIER は、設定後に変更できません。詳細については、 アーカイブストレージティア をご参照ください。

このパラメーターを指定しない場合、その有効期限ポリシーでは行をアーカイブすることなく削除します。

  • COOL では、アーカイブを有効にするには90日以上のアーカイブ期間(ARCHIVE_FOR_DAYS)を設定する必要があります。

  • COLD では、アーカイブを有効にするには180日以上のアーカイブ期間(ARCHIVE_FOR_DAYS)を設定する必要があります。

デフォルト: 値なし

ARCHIVE_FOR_DAYS = number_of_days

ポリシー式と一致した行をアーカイブストレージに保持する日数を指定します。設定すると、Snowflakeは ARCHIVE_TIER で選択した値に従って、データをアーカイブストレージに移動します。未設定の場合、Snowflakeはデータをアーカイブせずにテーブルの行を期限切れにします。

値:

  • ARCHIVE_TIER = COOL: 90 - 2147483647

  • ARCHIVE_TIER = COLD: 180 - 2147483647

デフォルト: 未設定

COMMENT = 'string_literal'

ストレージライフサイクルポリシーのコメントを指定します。

デフォルト: 値なし

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

タグ の名前とタグ文字列の値を指定します。

タグ値は常に文字列であり、タグ値の最大文字数は256です。

ステートメントでのタグの指定に関する情報については、 Tag quotas をご参照ください。

アクセス制御の要件

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

権限

オブジェクト

メモ

CREATE STORAGE LIFECYCLE POLICY

スキーマ

なし

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

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

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

使用上の注意

  • OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

    • OR REPLACE を指定していて、ポリシーが任意のオブジェクトに添付されている場合、コマンドは失敗します。

    • このコマンドについて OR REPLACEIF NOT EXISTS を合わせて使用することはできません。

    • 既存のストレージライフサイクルポリシーを置き換えるために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE STORAGE LIFECYCLE POLICY コマンドを実行します。

  • ポリシー本体に1つ以上の サブクエリ を含めると、エラーが発生する可能性があります。可能であれば、サブクエリの数を制限し、 JOIN 操作の数を制限し、 WHERE 句の条件を単純化します。

  • ポリシーがテーブルに添付されている場合は、ポリシー署名を変更することはできません。署名を変更する必要がある場合は、 DROP STORAGE LIFECYCLE POLICY コマンドを使用して新しいポリシーを作成します。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

次のライフサイクルポリシーは、閉じたアカウントに対応し、60日以上経過している行からのデータをアーカイブストレージ(COOL ティア)に移動します。

CREATE STORAGE LIFECYCLE POLICY example_policy
  AS (event_ts TIMESTAMP, account_id NUMBER)
  RETURNS BOOLEAN ->
    event_ts < DATEADD(DAY, -60, CURRENT_TIMESTAMP())
    AND EXISTS (
      SELECT 1 FROM closed_accounts
      WHERE id = account_id
    )
  ARCHIVE_TIER = COOL
  ARCHIVE_FOR_DAYS = 180;
Copy