ALTER ICEBERG TABLE¶
既存の Apache Iceberg™テーブル のクラスタリングオプションやタグなどのプロパティを変更します。
注釈
標準のSnowflakeデータベースで外部管理されているIcebergテーブルのカタログ統合を別のカタログ統合に置き換えるには、SYSTEM$SET_CATALOG_INTEGRATION をご参照ください。
また、 ALTER ICEBERG TABLE ステートメントを使用して、テーブルをリフレッシュしたり、テーブルを変換したり、構造化タイプの列を変更したりすることもできます。これらの操作の構文はかなり異なります。Icebergテーブルのリフレッシュまたは変換の構文、パラメーターの説明、使用上の注意、および例を表示するには、以下のページをご参照ください。
このトピックでは、 Iceberg tables と指定することで混乱を避ける場合を除き、Icebergテーブルを単に「テーブル」と呼びます。
構文¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> { clusteringAction | tableColumnAction }
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> SET
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>']
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ AUTO_REFRESH = { TRUE | FALSE } ]
[ TARGET_FILE_SIZE = { AUTO | 16MB | 32MB | 64MB | 128MB } ]
[ CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
[ LOG_LEVEL = { ERROR | WARN | DEBUG } ]
[ ENABLE_DATA_COMPACTION = { TRUE | FALSE } ]
[ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> UNSET
[ REPLACE_INVALID_CHARACTERS ]
[ LOG_LEVEL ]
[ ENABLE_DATA_COMPACTION ]
[ ENABLE_ICEBERG_MERGE_ON_READ ]
ALTER ICEBERG TABLE [ IF EXISTS ] dataGovnPolicyTagAction
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> searchOptimizationAction
条件:
clusteringAction ::= { CLUSTER BY ( <expr> [ , <expr> , ... ] ) /* { SUSPEND | RESUME } RECLUSTER is valid action */ | { SUSPEND | RESUME } RECLUSTER | DROP CLUSTERING KEY }tableColumnAction ::= { ADD [ COLUMN ] [ IF NOT EXISTS ] <col_name> <col_type> [ DEFAULT <col_default> ] [ inlineConstraint ] [ COLLATE '<collation_specification>' ] | RENAME COLUMN <col_name> TO <new_col_name> | ALTER | MODIFY [ ( ] , [ COLUMN ] <col1_name> { [ SET ] NOT NULL | DROP NOT NULL } , [ COLUMN ] <col1_name> [ [ SET DATA ] TYPE ] <type> , [ COLUMN ] <col1_name> COMMENT '<string>' , [ COLUMN ] <col1_name> UNSET COMMENT , [ COLUMN ] <col1_name> SET WRITE DEFAULT <col_write_default> , [ COLUMN ] <col1_name> DROP WRITE DEFAULT [ , [ COLUMN ] <col2_name> ... ] [ , ... ] [ ) ] | DROP [ COLUMN ] [ IF EXISTS ] <col1_name> [, <col2_name> ... ] } inlineConstraint ::= [ NOT NULL ] [ CONSTRAINT <constraint_name> ] { UNIQUE | PRIMARY KEY | { [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ] } } [ <constraint_properties> ]dataGovnPolicyTagAction ::= { SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ] | UNSET TAG <tag_name> [ , <tag_name> ... ] } | { 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 } | { SET AGGREGATION POLICY <policy_name> [ ENTITY KEY ( <col_name> [, ... ] ) ] [ FORCE ] | UNSET AGGREGATION POLICY } | { SET JOIN POLICY <policy_name> [ FORCE ] | UNSET JOIN POLICY } | ADD [ COLUMN ] [ IF NOT EXISTS ] <col_name> <col_type> [ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col1_name> , <cond_col_1> , ... ) ] ] [ [ WITH ] PROJECTION POLICY <policy_name> ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] | { { 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 PROJECTION POLICY <policy_name> [ FORCE ] | UNSET PROJECTION 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> ... ]searchOptimizationAction ::= { ADD SEARCH OPTIMIZATION [ ON <search_method_with_target> [ , <search_method_with_target> ... ] ] | DROP SEARCH OPTIMIZATION [ ON { <search_method_with_target> | <column_name> | <expression_id> } [ , ... ] ] }詳細については、 検索最適化アクション(searchOptimizationAction) をご参照ください。
パラメーター¶
table_name変更するテーブルの識別子。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
SET ...外部テーブルのために設定する1つ以上のプロパティ/パラメーターを指定します(空白、コンマ、または改行で区切り)。
REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }クエリ結果で、無効な UTF -8文字をUnicode置換文字(�)で置き換えるかどうかを指定します。このパラメーターを設定できるのは、外部Icebergカタログを使用するテーブルのみです。
TRUEの場合は、無効な UTF -8文字がUnicode置換文字に置き換えられます。FALSEの場合は、無効な UTF -8 文字は変更されません。Parquetデータファイルで無効な UTF -8 文字が検出された場合、Snowflakeはユーザーエラーメッセージを返します。
指定しない場合、Icebergテーブルのデフォルトはスキーマ、データベース、またはアカウントのパラメーター値になります。スキーマはデータベースより優先され、データベースはアカウントより優先されます。
デフォルト:
FALSE
CATALOG_SYNC = 'snowflake_open_catalog_integration_name'Snowflake Open Catalog 用に構成されたカタログ統合の名前を指定します。Snowflakeは、 Snowflake Open Catalog アカウントの外部カタログとテーブルを同期します。Snowflake管理のIcebergテーブルとOpen Catalogの同期に関する情報については、 Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する をご参照ください。
このパラメーターの詳細については、 CATALOG_SYNC をご参照ください。
DATA_RETENTION_TIME_IN_DAYS = integerSnowflake管理テーブルの履歴データに対してTime Travelアクション(SELECT、 CLONE、 UNDROP)を実行できるように、テーブルの保持期間を指定します。詳細については、 Time Travelの理解と使用 をご参照ください。
このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。
値:
Standard Edition:
0または1Enterprise Edition: 永続テーブルの場合は
0~90
デフォルト:
Standard Edition:
1Enterprise Edition(またはそれ以上):
1(スキーマ、データベースまたはアカウントレベルで別のデフォルト値が指定されていない場合)
注釈
0の値は、テーブルのTime Travelを効果的に無効化します。
AUTO_REFRESH = { TRUE | FALSE }メタデータの更新のために、Snowflake がテーブルに関連付けられた外部 Iceberg カタログを自動的にポーリングするかどうかを指定します。
カタログ統合の
REFRESH_INTERVAL_SECONDSパラメータに値が指定されていない場合、Snowflake はデフォルトの更新間隔 30 秒を使用します。詳細については、 自動更新 をご参照ください。
デフォルト: FALSE
注釈
AUTO_REFRESHを INFER_SCHEMAで使用することはサポートされていません。
TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }'テーブルのターゲットParquetファイルサイズを指定します。
:code:`'{ 16MB | 32MB | 64MB | 128MB }'`では、テーブルのターゲットファイルサイズを固定して指定します。
'AUTO'は、テーブルタイプに応じて動作が異なります。Snowflake 管理テーブル: AUTO は、サイズ、DML パターン、取り込みワークロード、クラスタリング構成などのテーブル特性に基づいて、Snowflakeがテーブルのファイルサイズを選択することを指定します。Snowflakeは、Snowflakeでの読み取りと書き込みパフォーマンスを向上させるために、ファイルサイズを16 MB を起点として自動的に調整します。このオプションを使用して、Snowflakeでテーブルのパフォーマンスを最適化します。
外部管理テーブル: AUTO は、Snowflakeが最大のファイルサイズ(128MB)に積極的にスケーリングすることを指定します。
詳細については、 ターゲットファイルサイズの設定 をご参照ください。
デフォルト: AUTO
CONTACT purpose = contact [ , purpose = contact ... ]既存のオブジェクトを、1つ以上の 連絡先 に関連付けます。
CONTACTプロパティを同じステートメント内の他のプロパティと一緒に設定することはできません。
LOG_LEVEL = { ERROR | WARN | DEBUG }インジェストされ、アクティブなイベントテーブルで使用できるようにする自動リフレッシュイベントの重大度レベルを指定します。LOG_LEVEL は、次の値に基づいてキャプチャするイベントを決定します。
ERROR:解決するために人間の介入を必要とする変更を示すイベント。WARN:人間の介入なしに解決できる問題を示すイベント。DEBUG:大量のイベント。
注釈
デフォルトの重大度レベルはありません。イベントをキャプチャするには、Icebergテーブルレベルまたはアカウントレベルのいずれかで重大度レベルを設定する必要があります。
詳細については、 自動リフレッシュイベントのモニター をご参照ください。
ENABLE_DATA_COMPACTION = { TRUE | FALSE }Snowflakeがテーブルでデータ圧縮を有効にするかどうかを指定します。このパラメーターを設定できるのは、Snowflake管理テーブルにのみです。
TRUE:Snowflakeはテーブルでデータ圧縮を実行します。FALSE:Snowflakeはテーブルでデータ圧縮を実行しません。
デフォルト:
TRUE詳細については、 ENABLE_DATA_COMPACTION および データ圧縮の設定 をご参照ください。
ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE }-
テーブルが読み取り時マージ動作を使用するかどうかを指定します。
このパラメーターを設定しない場合、Icebergテーブルのデフォルトは、スキーマ、データベース、アカウントに対して指定された読み取り時マージ動作になります。スキーマはデータベースより優先され、データベースはアカウントより優先されます。
- 値:
TRUE:テーブルは読み取り時マージ動作を使用します。テーブルが|iceberg-tm|テーブル仕様のv2またはv3のどちらに準拠しているかに応じて、動作は以下のリストで説明されているとおりになります。テーブルがv2に準拠している場合、位置削除ファイルを使用します。
テーブルがv3に準拠している場合は、削除ベクターを使用します。
FALSE:テーブルは書き込み時コピー動作を使用します。デフォルト:
TRUEこのパラメーターの詳細な説明については、 ENABLE_ICEBERG_MERGE_ON_READ をご参照ください。
UNSET現在、このコマンドで解除できるのは以下のパラメーターのみです。
REPLACE_INVALID_CHARACTERSCATALOG_SYNCLOG_LEVELENABLE_DATA_COMPACTIONENABLE_ICEBERG_MERGE_ON_READ
クラスタリングアクション(clusteringAction)¶
注釈
クラスタリングをサポートしているのは、SnowflakeをIcebergカタログとして使用するテーブルのみです。
CLUSTER BY ( expr [ , expr , ... ] )1つ以上のテーブル列または列式をテーブルのクラスタリングキーとして指定(または変更)します。これらは 自動クラスタリング によってクラスタリングが維持される列/式です。
クラスタリングの詳細については クラスタリングキーとクラスタ化されたテーブル をご参照ください。
SUSPEND | RESUME RECLUSTERテーブルの 自動クラスタリング を有効または無効にします。
DROP CLUSTERING KEYテーブルのクラスタリングキーをドロップします。
クラスタリングキーと再クラスタリングの詳細については、 Snowflakeテーブル構造について をご参照ください。
テーブル列アクション(tableColumnAction)¶
ADD [ COLUMN ] [ IF NOT EXISTS ] col_name col_data_type [ DEFAULT col_default ].[ inlineConstraint ][ COLLATE 'collation_specification' ] [ , ... ]新しい列を追加します。デフォルト値、インライン制約、:ref:`照合順序仕様<label-collate_clause>`を指定できます。
テーブル列アクションの詳細については、次をご参照ください。
同じコマンドで複数の列に対して ADD COLUMN 操作を実行できます。
列が既に存在するかどうかわからない場合、列を追加する際に IF NOT EXISTS を指定できます。列が既に存在する場合、 ADD COLUMN は既存の列に影響を与えず、エラーにもなりません。
注釈
新しい列に以下のいずれかを指定している場合は、 IF NOT EXISTS を指定できません。
AUTOINCREMENT、または IDENTITY
UNIQUE、 PRIMARY KEY、または FOREIGN KEY
DEFAULT col_default-
Icebergバージョン3(v3)テーブルでのみ、列のデフォルト値を指定します。列のデータ型が文字列の場合は、デフォルト値を一重引用符で囲む必要があります。
指定した値は、列の初期デフォルトと書き込みデフォルトの両方として使用されます。列の書き込みデフォルトを変更するには、ALTER ICEBERG TABLE ... ALTER COLUMN ... SET WRITE DEFAULTを使用します。
重要
列にデフォルト値を指定する場合は、静的な値を指定する必要があります。値に式や関数を指定することはできません。この要件は、Iceberg v3仕様に準拠しており、初期デフォルトと書き込みデフォルトの両方に適用されます。
Icebergテーブルでのデフォルト値の使用について詳しくは、:ref:`label-tables_iceberg_default_values`を参照してください。
RENAME COLUMN col_name to new_col_name指定された列の名前を、テーブル内の他の列で現在使用されていない新しい名前に変更します。
クラスタリングキーの一部である列の名前を変更することはできません。
テーブルや列などのオブジェクトの名前を変更する場合は、そのオブジェクトを参照する他のオブジェクトを新しい名前で更新する必要があります。
{ ALTER | MODIFY } COLUMN col_name ...列のプロパティを変更します。
SET WRITE DEFAULT col_default-
Icebergバージョン3(v3)テーブルでのみ、列の書き込みデフォルト値を指定します。列のデータ型が文字列の場合は、デフォルト値を一重引用符で囲む必要があります。
列にすでに書き込みデフォルトが指定されている場合は、この設定を使用して書き込みデフォルトを変更できます。
重要
列にデフォルト値を指定する場合は、静的な値を指定する必要があります。値に式や関数を指定することはできません。この要件は、Iceberg v3仕様に準拠しており、初期デフォルトと書き込みデフォルトの両方に適用されます。
Icebergテーブルでのデフォルト値の使用について詳しくは、:ref:`label-tables_iceberg_default_values`を参照してください。
DROP WRITE DEFAULT-
Icebergバージョン3(v3)テーブルでのみ、列の書き込みデフォルト値をドロップします。
Icebergテーブルでのデフォルト値の使用について詳しくは、:ref:`label-tables_iceberg_default_values`を参照してください。
DROP COLUMN [ IF EXISTS ] col_name [ CASCADE | RESTRICT ]指定した列をテーブルから削除します。
列が既に存在するかどうかわからない場合は、列を削除する際に IF EXISTS を指定できます。列が存在しない場合、 DROP COLUMN は何の効果もなく、エラーにもなりません。
列のドロップは、メタデータのみの操作です。マイクロパーティションを即時に書き換えるわけではないため、列が使っていたスペースが即時に解放されるわけではありません。通常、個々のマイクロパーティション内のスペースは、次にマイクロパーティションが再書き込みされるときに解放されます。これは通常、 DML (INSERT、 UPDATE、 DELETE)または再クラスタリングによって書き込みが完了した時点です。
データガバナンス方針とタグアクション(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テーブルから すべての:doc:` 行アクセスポリシー</user-guide/security-row-using>`の関連付けをドロップします。
この式は、イベントテーブルからポリシーをドロップする 前に、スキーマから行アクセスポリシーをドロップするときに役立ちます。この式を使用して、テーブルから行アクセスポリシーの関連付けをドロップします。
バックアップの作成時に、行アクセスポリシーがテーブルに適用され、そのポリシーが後でドロップされたとします。バックアップ からテーブルを復元した後、ALTER TABLE コマンドを DROP ALL ROW ACCESS POLICIES 句を使用して実行するまでクエリはできません。
SET AGGREGATION POLICY policy_name
[ ENTITY KEY (col_name [ , ... ]) ] [ FORCE ]テーブルに 集計ポリシー を割り当てます。
オプションの ENTITY KEY パラメーターを使用して、テーブル内でエンティティを一意に識別する列を定義します。詳細については、 集計ポリシーによるエンティティレベルのプライバシーの実装 をご参照ください。
既存の集計ポリシーを新しい集計ポリシーにアトミックに置き換えるには、オプションの FORCE パラメーターを使用します。
UNSET AGGREGATION POLICYテーブルから集計ポリシーをデタッチします。
SET JOIN POLICY policy_name
[ FORCE ]結合ポリシー をテーブルに割り当てます。
オプションの FORCE パラメーターを使用して、既存の結合ポリシーを新しい結合ポリシーにアトミックに置き換えます。
UNSET JOIN POLICYテーブルから結合ポリシーを削除します。
{ ALTER | MODIFY } [ COLUMN ] ...USING ( col_name , cond_col_1 ... )条件付きマスキングポリシー SQL 式に渡す引数を指定します。
リストの最初の列は、データをマスクまたはトークン化するポリシー条件の列を指定し、マスキングポリシーが設定されている列と一致する 必要 があります。
追加の列は、最初の列でクエリが実行されたときに、クエリ結果の各行のデータをマスクするかトークン化するかを決定するために評価する列を指定します。
USING 句が省略されている場合、Snowflakeは条件付きマスキングポリシーを通常の マスキングポリシー として扱います。
FORCE単一のステートメント内で、列に現在設定されているマスキングまたは投影ポリシーを別のポリシーに置き換えます。
マスキングポリシーで
FORCEキーワードを使用するには、 ALTER TABLE ステートメント(つまり STRING)内のポリシーの データ型 が、列に現在設定されているマスキングポリシーのデータ型(つまり STRING)と一致している必要があります。現在列にマスキングポリシーが設定されていない場合は、このキーワードを指定しても効果はありません。
詳細については、 列のマスキングポリシーを置き換える または 投影ポリシーの置き換え をご参照ください。
検索最適化アクション(searchOptimizationAction)¶
ADD SEARCH OPTIMIZATIONテーブル全体の、またはオプションの ON 句を指定した場合は特定の列の 検索最適化 を追加します。
注釈
特にテーブル内のデータが頻繁に変更される場合、検索最適化は維持にコストがかかる可能性があります。詳細については、 検索最適化のコスト見積もりおよび管理 をご参照ください。
ON search_method_with_target [, search_method_with_target ... ](テーブル全体ではなく)特定の列に対して検索最適化を構成したいことを指定します。
search_method_with_targetには、次の構文の式を使用します。<search_method>( <target> [ , <target> , ... ] [ , ANALYZER => '<analyzer_name>' ] )
条件:
search_methodは、特定の型の述語に対するクエリを最適化する次の方法のいずれかを指定します。検索方法
説明
FULL_TEXTVARCHAR (テキスト)タイプを使用する述語。
EQUALITY等価および IN 述語。
SUBSTRING部分文字列と正規表現に一致する述語(例えば、 [ NOT ] LIKE、 [ NOT ] ILIKE、 [ NOT ] RLIKE、および REGEXP_LIKE)。
targetは列またはアスタリスク(*)を指定します。search_methodの値によっては、以下のタイプのいずれかの列を指定できます。検索方法
サポートされるターゲット
FULL_TEXTVARCHAR (テキスト)データ型の列。
EQUALITY数値、文字列、バイナリデータ型の列。
SUBSTRINGVARCHAR (テキスト)データ型の列。
テーブル内の該当するすべての列をターゲットとして指定するには、アスタリスク(
*)を使用します。特定の検索方法に対して、アスタリスクと特定の列名の 両方 を指定することはできません。ただし、さまざまな検索方法でアスタリスクを指定できます。
たとえば、次の式を指定できます。
-- Allowed ON SUBSTRING(*) ON EQUALITY(*), SUBSTRING(*)
以下の式は指定できません。
-- Not allowed ON EQUALITY(*, c1) ON EQUALITY(c1, *) ON EQUALITY(v1:path, *) ON EQUALITY(c1), EQUALITY(*)
search_methodがFULL_TEXTの場合、ANALYZER => 'analyzer_name'がテキスト解析器の名前を指定します。検索最適化アナライザーの詳細情報については、 ALTER TABLE をご参照ください。
ターゲットに複数の検索方法を指定するには、コンマを使用して後続の各メソッドとターゲットを区切ります。
ALTER ICEBERG TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1), EQUALITY(c2, c3);
同じテーブルに対して ALTER ICEBERG TABLE ... ADD SEARCH OPTIMIZATION ON ... コマンドを複数回実行すると、後続の各コマンドがテーブルの既存の構成に追加されます。たとえば、次のコマンドを実行するとします。
ALTER ICEBERG TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2); ALTER ICEBERG TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c3, c4);
これにより、列c1、c2、c3、およびc4の等価述語がテーブルの構成に追加されます。これは、次のコマンドを実行するのと同じです。
ALTER ICEBERG TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2, c3, c4);
例については、 特定の列に対する検索最適化の有効化 をご参照ください。
DROP SEARCH OPTIMIZATIONテーブル全体の、またはオプションの ON 句を指定した場合は特定の列から 検索最適化 を削除します。
注釈
テーブルに検索最適化プロパティがある場合、テーブルをドロップしてからドロップを解除すると、検索最適化プロパティが保持されます。
テーブルから検索最適化プロパティを削除した後に再度追加すると、最初に追加したときと同じコストがかかります。
ON search_method_with_target | column_name | expression_id [ , ... ](テーブル全体の検索最適化を削除するのではなく)特定の列の検索最適化構成を削除することを指定します。
ドロップする列構成を識別するには、次のいずれかを指定します。
search_method_with_targetでは、1つ以上の特定の列に対するクエリを最適化する方法を指定します。前に説明されている構文 を使用します。column_nameには、検索最適化用に構成された列の名前を指定します。列名を指定すると、その列の式はすべて削除されます。expression_idには、 DESCRIBE SEARCH OPTIMIZATION コマンドの出力にリストされた式の ID を指定します。
これらを複数指定するには、項目間にコンマを使用します。
ターゲット、列名、および式 IDs を使用して、検索方法を自由に組み合わせて指定できます。
例については、 特定の列に対する検索最適化のドロップ をご参照ください。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
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 |
カタログ統合 |
テーブルがカタログ統合を使用する場合は必要です。 |
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
このコマンドを実行できるのは、テーブルの所有者(つまり、テーブルに対する OWNERSHIP 権限を持つロール)以上のみです。
クラスタリングをサポートしているのは、SnowflakeをIcebergカタログとして使用するテーブルのみです。Icebergテーブルにクラスタリングを追加するには、テーブルを含むスキーマとデータベースに対する USAGE または OWNERSHIP 権限も必要です。
:doc:`カタログリンクのデータベース </user-guide/tables-iceberg-catalog-linked-database>`内のテーブルの場合、以下の機能はサポートされていません。
既存の列のNOTNULL、COMMENT、および DATATYPE プロパティの設定。
列の制約の設定。
クラスタリング
ALTER TABLE コマンドを実行すると、Iceberg テーブルでデータ メトリック関数を使用できます。詳細については、 SQLを使用したデータメトリック関数の設定 をご参照ください。
制限など、Icebergテーブルでの検索最適化の使用については、検索最適化ドキュメントの Apache Iceberg™ テーブルのサポート をご参照ください。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CATALOG_SYNC パラメーターの変更に関するトラブルシューティングについては、 CATALOG_SYNC パラメーターを指定した際、Icebergテーブルを変更することができない をご参照ください。
既存テーブルのPATH_LAYOUTプロパティを変更するために、このコマンドを使用することはできません。
例¶
次の例では、Icebergテーブルに値 customer のタグ(my_tag)を設定します。
ALTER ICEBERG TABLE my_iceberg_table SET TAG my_tag = 'customer';
以下の例では、既存の外部管理テーブルに対して 自動リフレッシュ を有効にしています。
ALTER ICEBERG TABLE my_iceberg_table SET AUTO_REFRESH = TRUE;
次の例は、Icebergテーブルの検索最適化を追加および削除します。
ALTER ICEBERG TABLE my_iceberg_table ADD SEARCH OPTIMIZATION ON SUBSTRING(C6);
ALTER ICEBERG TABLE my_iceberg_table DROP SEARCH OPTIMIZATION ON EQUALITY(C7, C8);
