ALTER DYNAMIC TABLE

動的テーブル のプロパティを変更します。

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

CREATE DYNAMIC TABLEDESCRIBE DYNAMIC TABLEDROP DYNAMIC TABLESHOW DYNAMIC TABLES

このトピックの内容:

構文

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> { SUSPEND | RESUME }

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> SWAP WITH <target_dynamic_table_name>

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> REFRESH

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> { clusteringAction }

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> { tableColumnCommentAction }

ALTER DYNAMIC TABLE <name> { SET | UNSET } COMMENT = '<string_literal>'

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> dataGovnPolicyTagAction

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> searchOptimizationAction

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> SET
  [ TARGET_LAG = { '<num> { seconds | minutes | hours | days }'  | DOWNSTREAM } ]
  [ WAREHOUSE = <warehouse_name> ]
  [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
  [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]

ALTER DYNAMIC TABLE [ IF EXISTS ] <name> UNSET
  [ DATA_RETENTION_TIME_IN_DAYS ],
  [ MAX_DATA_EXTENSION_TIME_IN_DAYS ],
  [ DEFAULT_DDL_COLLATION ]
Copy

条件:

clusteringAction ::=
  {
    CLUSTER BY ( <expr> [ , <expr> , ... ] )
    | { SUSPEND | RESUME } RECLUSTER
    | DROP CLUSTERING KEY
  }
Copy

詳細については、 クラスタリングキーとクラスタ化されたテーブル をご参照ください。

tableCommentAction ::=
  {
    ALTER | MODIFY [ ( ]
                           [ COLUMN ] <col1_name> COMMENT '<string>'
                         , [ COLUMN ] <col1_name> UNSET COMMENT
                       [ , ... ]
                   [ ) ]
  }
Copy
dataGovnPolicyTagAction ::=
  {
      ADD ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , ... ] )
    | DROP ROW ACCESS POLICY <policy_name>
    | DROP ROW ACCESS POLICY <policy_name> ,
        ADD ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , ... ] )
    | DROP ALL ROW ACCESS POLICIES
  }
  |
  {
    { ALTER | MODIFY } [ COLUMN ] <col1_name>
        SET MASKING POLICY <policy_name>
          [ USING ( <col1_name> , <cond_col_1> , ... ) ] [ FORCE ]
      | UNSET MASKING POLICY
  }
  |
  { ALTER | MODIFY } [ COLUMN ] <col1_name> SET TAG
      <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
      , [ COLUMN ] <col2_name> SET TAG
          <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
  |
  { ALTER | MODIFY } [ COLUMN ] <col1_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
                  , [ COLUMN ] <col2_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
  }
  |
  {
      SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
    | UNSET TAG <tag_name> [ , <tag_name> ... ]
  }
Copy
searchOptimizationAction ::=
  {
    ADD SEARCH OPTIMIZATION [
      ON <search_method_with_target> [ , <search_method_with_target> ... ]
        [ EQUALITY ]
      ]

    | DROP SEARCH OPTIMIZATION [
      ON { <search_method_with_target> | <column_name> | <expression_id> }
        [ EQUALITY ]
        [ , ... ]
      ]

    | SUSPEND SEARCH OPTIMIZATION [
       ON { <search_method_with_target> | <column_name> | <expression_id> }
          [ , ... ]
     ]

    | RESUME SEARCH OPTIMIZATION [
       ON { <search_method_with_target> | <column_name> | <expression_id> }
          [ , ... ]
     ]
  }
Copy

詳細については、 検索最適化アクション(searchOptimizationAction) をご参照ください。

パラメーター

name

変更する動的テーブルの識別子。

識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

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

SUSPEND | RESUME

動的テーブルで実行するアクションを指定します。

  • SUSPEND は、動的テーブルのリフレッシュを中断します。動的テーブルが他の動的テーブルで使用されている場合は、それらも中断されます。

  • RESUME は、動的テーブルのリフレッシュを再開します。再開操作は、手動で中断されていない、下流にあるすべての動的テーブルにカスケードします。

RENAME TO new_name

指定された動的テーブルの名前を、スキーマ内の他の動的テーブルで現在使用されていない新しい識別子に変更します。

動的テーブルの名前の変更には、その動的テーブルのスキーマに対する CREATE DYNAMIC TABLE 権限が必要です。

また、動的テーブルを別のデータベースやスキーマに移動し、動的テーブルの名前を変更することもできます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ db_name.schema_name.new_name または schema_name.new_name の形式で含む、修飾された new_name 値を指定します。

次の制限が適用されます。

  • 宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。

  • オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、オブジェクトを管理アクセススキーマに移動することはできません。

  • オブジェクト(テーブル、列など)の名前が変更されると、それを参照する他のオブジェクトも新しい名前で更新する必要があります。

SWAP WITH target_dynamic_table_name

1つのトランザクションで2つの動的テーブルを入れ替えます。この操作を実行するために使用されるロールには、動的テーブルに対する OWNERSHIP 権限が必要です。

次の制限が適用されます。

  • 動的テーブルを別の動的テーブルと入れ替えることはできます。

REFRESH

動的テーブルを手動でリフレッシュすることを指定します。

ユーザーが中断した動的テーブルも自動中断した動的テーブルも手動でリフレッシュできます。手動でリフレッシュされた動的テーブルは、 DYNAMIC_TABLE_REFRESH_HISTORY 関数の refresh_trigger の出力として MANUAL を返します。

動的テーブルをリフレッシュすると、同じデータ・タイムスタンプの上流の動的テーブルもすべてリフレッシュされることに注意してください。詳細については、 動的テーブルのウェアハウスまたはターゲットラグの変更 をご参照ください。

動的テーブルのリフレッシュステータスについては、 DYNAMIC_TABLE_REFRESH_HISTORY をご参照ください。

SET ...

テーブルに設定する1つ以上のプロパティ/パラメーターを指定します(空白、コンマ、または改行で区切られます)。

TARGET_LAG = { num { seconds | minutes | hours | days } | DOWNSTREAM }

動的テーブルのターゲットラグを指定します。

'num seconds | minutes | hours | days'

動的テーブルのコンテンツがベーステーブルの更新から遅れる最大時間を指定します。

例:

  • 動的テーブルのデータが5分以上遅れないようにするには、 5 minutes を指定します。

  • 動的テーブルのデータが5時間以上遅れないようにするには、 5 hours を指定します。

最小値は1分です。動的テーブルAが別の動的テーブルBに依存している場合、Aの最小ラグはBのラグ以上にする必要があります。

DOWNSTREAM

動的テーブルの下流の動的テーブルがリフレッシュされた場合に、その動的テーブルもリフレッシュされるように指定します。

WAREHOUSE = warehouse_name

動的テーブルをリフレッシュするためのコンピューティングリソースを提供するウェアハウスの名前を指定します。

動的テーブルの所有者ロールは、このウェアハウスで USAGE 権限を持っている必要があります。

DATA_RETENTION_TIME_IN_DAYS = integer

Time Travel のテーブルの保持期間を変更するオブジェクトレベルのパラメーター。詳細については、 Time Travelの理解と使用 および 仮テーブルと一時テーブルの使用 をご参照ください。

このパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。

値:

  • Standard Edition: 0 または 1

  • Enterprise Edition:

    • 永続イベントテーブルの場合は 090

    • 一時データベースの場合は 0 または 1

注釈

0 の値は、テーブルの Time Travel を効果的に無効化します。

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Snowflake が動的テーブルのデータ保持期間を延長して、動的テーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。

このパラメーターの詳細については、 MAX_DATA_EXTENSION_TIME_IN_DAYS をご参照ください。

DEFAULT_DDL_COLLATION = 'collation_specification'

テーブルに追加された新しい列のデフォルトの 照合順序仕様 を指定します。

パラメーターを設定しても、既存の列の照合順序仕様は変更され ません

詳細については、 DEFAULT_DDL_COLLATION をご参照ください。

UNSET ...

動的テーブルの設定を解除する1つ以上のプロパティ/パラメーターを指定し、それらをデフォルトにリセットします。

  • DATA_RETENTION_TIME_IN_DAYS

  • MAX_DATA_EXTENSION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

クラスタリングアクション(clusteringAction

CLUSTER BY ( expr [ , expr , ... ] )

1つ以上のテーブル列または列式を動的テーブルのクラスタリングキーとして指定(または変更)します。これらは、自動クラスタリングによってクラスタリングが維持される列/式です。動的テーブルのクラスタリングキーを指定する前に、マイクロパーティションについて理解する必要があります。詳細については、 Snowflakeテーブル構造について をご参照ください。

クラスタリングキーを動的テーブルで使用する場合は、以下の点に注意してください。

  • 列定義は必須であり、ステートメントで明示的に指定する必要があります。

  • クラスタリングキーは、すべてのテーブルに対して意図または推奨されているわけでは ありません。通常、非常に大きな(例: マルチテラバイト)テーブルに役立ちます。

SUSPEND | RESUME RECLUSTER

動的テーブルの 自動クラスタリング を有効または無効にします。

DROP CLUSTERING KEY

動的テーブルのクラスタリングキーをドロップします。

クラスタリングキーと再クラスタリングの詳細については、 Snowflakeテーブル構造について をご参照ください。

テーブルコメントアクション(tableCommentAction

ALTER | MODIFY [ ( ] ` . [ COLUMN ] <col1_name> COMMENT '<string>' . , [ COLUMN ] <col1_name> UNSET COMMENT . [ , ... ] . [ ) ]

動的テーブルの列のコメントを変更、または既存のコメントを上書きします。

SET | UNSET COMMENT = '<string_literal>'

動的テーブルにコメントを追加するか、既存のコメントを上書きします。

データガバナンス方針とタグアクション(dataGovnPolicyTagAction

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

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

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

ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。

policy_name

ポリシーの識別子。スキーマに対して一意である必要があります。

ADD ROW ACCESS POLICY policy_name ON (col_name [ , ... ])

動的テーブルに行アクセスポリシーをテーブルに追加します。

少なくとも1つの列名を指定する必要があります。追加の列は、各列名をコンマで区切って指定できます。

DROP ROW ACCESS POLICY policy_name

動的テーブルから行アクセスポリシーをドロップします。

DROP ROW ACCESS POLICY policy_name, ADD ROW ACCESS POLICY policy_name ON ( col_name [ , ... ] )

動的テーブルに設定されている行アクセスポリシーをドロップし、1つの SQL ステートメントで同じテーブルに行アクセスポリシーを追加します。

DROP ALL ROW ACCESS POLICIES

動的テーブルから すべて の行アクセスポリシーの関連付けをドロップします。

{ ALTER | MODIFY } [ COLUMN ] ...
USING ( col_name , cond_col_1 ... )

条件付きマスキングポリシーに渡す引数を指定します。

リストの最初の列は、ポリシーの条件に基づいてマスクまたはトークン化されるデータを指定します。それは、マスキング・ポリシーが適用される列と一致 しなければなりません

追加の列は、最初の列から選択する際に、クエリ結果の各行でマスキングやトークン化のために評価するデータを指定します。

USING 句が省略されている場合、Snowflakeは条件付きマスキングポリシーを通常の マスキングポリシー として扱います。

FORCE

単一のステートメント内で、列に現在設定されているマスキングまたは投影ポリシーを別のポリシーに置き換えます。

マスキングポリシーで FORCE キーワードを使用するには、 ALTER DYNAMICTABLE ステートメント(つまり STRING)内のポリシーの データ型 が、列に現在設定されているマスキングポリシーのデータ型(つまり STRING)と一致している必要があります。

現在列にマスキングポリシーが設定されていない場合は、このキーワードを指定しても効果はありません。

詳細については、 列のマスキングポリシーを置き換える または 投影ポリシーの置き換え をご参照ください。

検索最適化アクション(searchOptimizationAction

ADD SEARCH OPTIMIZATION

テーブル全体の、またはオプションの ON 句を指定した場合は特定の列の 検索最適化 を追加します。

特にテーブル内のデータが頻繁に変更される場合、検索最適化は維持にコストがかかる可能性があります。詳細については、 検索最適化のコスト見積もりおよび管理 をご参照ください。

ON search_method_with_target [, search_method_with_target ... ]

特定の列または VARIANT フィールド(動的テーブル全体ではなく)に対して検索最適化を構成することを指定します。

search_method_with_target には、次の構文の式を使用します。

<search_method>(<target> [, ...])
Copy

条件:

  • search_method は、特定の型の述語に対するクエリを最適化する次の方法のいずれかを指定します。

  • target は、列、 VARIANT フィールド、またはアスタリスク(*)を指定します。

    search_method の値に応じて、次に挙げる型の列または VARIANT フィールドを指定できます。

    • GEO: GEOGRAPHY データ型の列。

    • SUBSTRING: VARIANTs のフィールドへのパスを含む、文字列または VARIANT データ型の列。 EQUALITY で説明したように、フィールドへのパスを指定します。ネストされたフィールドの検索も同様に改善されます。

    • EQUALITY: VARIANT 内のフィールドへのパスを含む、数値、文字列、バイナリ、および VARIANT データ型の列。

      VARIANT フィールドを指定するには、 ドットまたはブラケット表記 を使用します。例:

      • my_column:my_field_name.my_nested_field_name

      • my_column['my_field_name']['my_nested_field_name']

      フィールドへのコロン区切りのパスを使用することもできます。例:

      • my_column:my_field_name:my_nested_field_name

      VARIANT フィールドを指定すると、そのフィールドの下にネストされたすべてのフィールドに構成が適用されます。

      たとえば、 ON EQUALITY(src:a.b) を指定したとします。

      • この構成により、クエリ on src:a.b およびネストされたフィールド(例: src:a.b.csrc:a.b.c.d など)を改善できます。

      • この設定は、 src:a.b 接頭辞を使用するクエリ(例えば、 src:asrc:z など)にのみ影響します。

テーブル内の該当するすべての列をターゲットとして指定するには、アスタリスク(*)を使用します。

特定の検索方法に対して、アスタリスクと特定の列名の 両方 を指定することはできません。ただし、さまざまな検索方法でアスタリスクを指定できます。

たとえば、次の式を指定できます。

ON SUBSTRING(*)
ON EQUALITY(*), SUBSTRING(*), GEO(*)
Copy

以下の式は指定できません。

ON EQUALITY(*, c1)
ON EQUALITY(c1, *)
ON EQUALITY(v1:path, *)
ON EQUALITY(c1), EQUALITY(*)
Copy

ターゲットに複数の検索方法を指定するには、コンマを使用して後続の各メソッドとターゲットを区切ります。

ALTER DYNAMIC TABLE product ADD SEARCH OPTIMIZATION ON EQUALITY(c1), EQUALITY(c2, c3);
Copy

同じテーブルに対して ALTER DYNAMIC TABLE ... ADD SEARCH OPTIMIZATION ON ... コマンドを複数回実行すると、後続の各コマンドがテーブルの既存の構成に追加されます。例えば、次のコマンドを実行するとします。

ALTER DYNAMIC TABLE product ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2);
ALTER DYNAMIC TABLE product ADD SEARCH OPTIMIZATION ON EQUALITY(c3, c4);
Copy

これにより、列 c1c2c3、および c4 の等価述語がテーブルの構成に追加されます。これは、次のコマンドを実行するのと同じです。

ALTER DYNAMIC TABLE product ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2, c3, c4);
Copy

例については、 特定の列に対する検索最適化の有効化 をご参照ください。

DROP SEARCH OPTIMIZATION

動的テーブル全体の、またはオプションの ON 句を指定した場合は特定の列から 検索最適化 を削除します。

次の制限が適用されます。

  • 動的テーブルに検索最適化プロパティがある場合、動的テーブルをドロップしてからドロップを解除すると、検索最適化プロパティが保持されます。

  • 動的テーブルから検索最適化プロパティを削除した後に再度追加すると、最初に追加したときと同じコストがかかります。

ON search_method_with_target | column_name | expression_id [, ... ]

特定の列または VARIANT フィールド(テーブル全体の検索最適化をドロップするのではなく)の検索最適化構成をドロップすることを指定します。

ドロップする列構成を識別するには、次のいずれかを指定します。

  • search_method_with_target には、1つ以上の特定のターゲット(列または VARIANT フィールド)のクエリを最適化する方法を指定します。 前に説明されている構文 を使用します。

  • column_name には、検索最適化用に構成された列の名前を指定します。列名を指定すると、その列の VARIANT フィールドを使用する式を含む、その列のすべての式がドロップされます。

  • expression_id には、 DESCRIBE SEARCH OPTIMIZATION コマンドの出力にリストされた式の ID を指定します。

ターゲット、列名、および式 IDs を使用して、検索方法を自由に組み合わせて指定できます。

例については、 特定の列に対する検索最適化のドロップ をご参照ください。

使用上の注意

  • 動的テーブルを変更するには、その動的テーブルに対する OPERATE 権限を持つロールを使用する必要があります。一般的な情報については、 動的テーブルのメタデータを表示する権限 をご参照ください。

  • 動的テーブルを作成した後にマスキングポリシーを変更することはできません。

  • 既存の動的テーブルを更新し、現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出します。

  • ALTER TABLE コマンドを実行することで、動的テーブルでデータ測定関数を使用することができます。詳細については、 データメトリック関数の操作 をご参照ください。

  • IDENTIFIER()、変更する動的テーブルの名前を指定することはできません。例えば、次のステートメントは失敗します。

    ALTER DYNAMIC TABLE IDENTIFIER(product) SUSPEND;
    
    Copy
  • メタデータについて、

    注意

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

product という動的テーブルのターゲットラグタイムを1時間に変更します。

ALTER DYNAMIC TABLE product SET
  TARGET_LAG = '1 hour';
Copy

product という名前の動的テーブルに対して、動的テーブルのダウンストリームターゲットラグを指定します。

ALTER DYNAMIC TABLE product SET TARGET_LAG = DOWNSTREAM;
Copy

product 動的テーブルを中断します。

ALTER DYNAMIC TABLE product SUSPEND;
Copy

product 動的テーブルを再開します。

ALTER DYNAMIC TABLE product RESUME;
Copy

product 動的テーブルの名前を変更します。

ALTER DYNAMIC TABLE product RENAME TO updated_product;
Copy

product 動的テーブルを new-product と入れ替えます。

ALTER DYNAMIC TABLE product SWAP WITH new_product;
Copy

テーブルのクラスタリングキーを変更します。

ALTER DYNAMIC TABLE product CLUSTER BY (date);
Copy

テーブルからクラスタリングを削除します。

ALTER DYNAMIC TABLE product DROP CLUSTERING KEY;
Copy