ALTER ICEBERG TABLE

Ändert Eigenschaften wie Clustering-Optionen und Tags für eine bestehende Apache Iceberg™-Tabelle.

Sie können auch eine ALTER ICEBERG TABLE-Anweisung verwenden, um eine Tabelle zu aktualisieren, eine Tabelle zu konvertieren oder eine Spalte vom strukturierten Typ zu ändern. Die Syntax für diese Operationen ist sehr unterschiedlich. Syntax, Parameterbeschreibungen, Nutzungshinweise und Beispiele zum Aktualisieren oder Konvertieren einer Iceberg-Tabelle finden Sie auf den folgenden Seiten:

Unter diesem Thema werden Iceberg-Tabellen einfach als „Tabellen“ bezeichnet, es sei denn, die Angabe von Iceberg-Tabellen vermeidet Verwechslungen.

Siehe auch:

CREATE ICEBERG TABLE, DROP ICEBERG TABLE, SHOW ICEBERG TABLES, DESCRIBE ICEBERG TABLE

Syntax

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 } ]
  [ CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> UNSET
  [ REPLACE_INVALID_CHARACTERS ]
  [ CONTACT <purpose> ]

ALTER ICEBERG TABLE [ IF EXISTS ] dataGovnPolicyTagAction

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> searchOptimizationAction
Copy

Wobei:

clusteringAction ::=
  {
     CLUSTER BY ( <expr> [ , <expr> , ... ] )
     /* { SUSPEND | RESUME } RECLUSTER is valid action */
   | { SUSPEND | RESUME } RECLUSTER
   | DROP CLUSTERING KEY
  }
Copy
tableColumnAction ::=
  {
     ADD [ COLUMN ] [ IF NOT EXISTS ] <col_name> <col_type>
        [ 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 ] <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> ]
Copy
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> ... ]
Copy
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> }
          [ , ... ]
     ]
  }
Copy

Weitere Details dazu finden Sie unter Suchoptimierungsaktionen (searchOptimizationAction).

Parameter

table_name

Bezeichner der zu ändernden Tabelle.

Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

SET ...

Gibt eine oder mehrere Eigenschaften/Parameter an, die für die externe Tabelle festgelegt werden sollen (getrennt durch Leerzeichen, Kommas oder Neue-Zeile-Zeichen):

REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }

Gibt an, ob in Abfrageergebnissen ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen (�) ersetzt werden sollen. Sie können diesen Parameter nur für Tabellen festlegen, die einen externen Iceberg-Katalog verwenden.

  • TRUE: Snowflake ersetzt ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

  • FALSE lässt ungültige UTF-8-Zeichen unverändert. Snowflake gibt eine Fehlermeldung an den Benutzer zurück, wenn es auf ein ungültiges UTF-8-Zeichen in einer Parquet-Datendatei stößt.

Wenn nichts angegeben wird, ist die Iceberg-Tabelle standardmäßig die Katalogintegration für das Schema, die Datenbank oder das Konto. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

Standard: FALSE

CATALOG_SYNC = 'snowflake_open_catalog_integration_name'

Gibt den Namen einer für Snowflake Open Catalog konfigurierten Katalogintegration an. Snowflake synchronisiert die Tabelle mit einem externen Katalog in Ihrem Snowflake Open Catalog-Konto. Weitere Informationen zur Synchronisierung von Snowflake-verwalteten Iceberg-Tabellen mit Open Catalog finden Sie unter Eine Snowflake-verwaltete Tabelle mit Snowflake Open Catalog synchronisieren.

Weitere Informationen zu diesem Parameter finden Sie unter CATALOG_SYNC.

DATA_RETENTION_TIME_IN_DAYS = integer

Gibt die Aufbewahrungsfrist für eine Snowflake-verwaltete Tabelle an, sodass Time Travel-Aktionen (SELECT, CLONE, UNDROP) für historische Daten in der Tabelle durchgeführt werden können. Weitere Informationen dazu finden Sie unter Verstehen und Verwenden von Time Travel.

Eine ausführliche Beschreibung dieses Parameters auf Objektebene sowie weitere Informationen zu Objektparametern finden Sie unter Parameter.

Werte:

  • Standardausführung: 0 oder 1

  • Enterprise Edition: 0 bis 90 für permanente Tabellen

Standard:

  • Standardausführung: 1

  • Enterprise Edition (oder höher): 1 (es sei denn, es wurde ein anderer Standardwert auf Schema-, Datenbank- oder Kontoebene angegeben).

Bemerkung

Der Wert 0 deaktiviert Time Travel für die Tabelle.

AUTO_REFRESH = { TRUE | FALSE }

Gibt an, ob Snowflake den mit der Tabelle verbundenen externen Iceberg-Katalog automatisch nach Aktualisierungen der Metadaten abfragen soll, wenn Sie automatische Aktualisierung verwenden.

Bei Delta-basierten Tabellen fragt Snowflake Ihren externen Cloud-Speicher nach Updates ab.

Wenn für den Parameter REFRESH_INTERVAL_SECONDS bei der Katalogintegration kein Wert angegeben wird, verwendet Snowflake ein Standardaktualisierungsintervall von 30 Sekunden.

Standard: FALSE

CONTACT ( purpose = contact [ , purpose = contact ... ] )

Verknüpfen Sie das vorhandene Objekt mit einem oder mehreren Kontakten.

UNSET

Derzeit können Sie mit diesem Befehl nur die folgenden Parameter deaktivieren:

  • REPLACE_INVALID_CHARACTERS

  • CATALOG_SYNC

  • CONTACT purpose

Clustering-Aktionen (clusteringAction)

Bemerkung

Clustering wird nur für Tabellen unterstützt, die Snowflake als Iceberg-Katalog verwenden.

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

Gibt eine oder mehrere Tabellenspalten oder Spaltenausdrücke als Gruppierungsschlüssel für die Tabelle an (oder ändert sie). Dies sind die Spalten/Ausdrücke, für die das Clustering mit Automatic Clustering verwaltet wird.

Mehr über Clustering erfahren Sie unter Gruppierungsschlüssel und geclusterte Tabellen.

SUSPEND | RESUME RECLUSTER

Aktiviert oder deaktiviert Automatic Clustering für die Tabelle.

DROP CLUSTERING KEY

Löscht den Gruppierungsschlüssel für die Tabelle.

Weitere Informationen zu Gruppierungsschlüsseln und Reclustering finden Sie unter Grundlegendes zu Tabellenstrukturen in Snowflake.

Tabellenspaltenaktionen (tableColumnAction)

ADD [ COLUMN ] [ IF NOT EXISTS ] col_name col_data_type . [ inlineConstraint ] [ COLLATE 'collation_specification' ] [ , ... ]

Fügt eine neue Spalte hinzu. Sie können eine Inline-Einschränkung oder eine Sortierungsspezifikation angeben.

Weitere Informationen zu Aktionen auf Tabellenspalten finden Sie unter:

Sie können ADD COLUMN-Operationen für mehrere Spalten mit demselben Befehl ausführen.

Wenn Sie sich nicht sicher sind, ob die Spalte bereits existiert, können Sie beim Hinzufügen der Spalte IF NOT EXISTS angeben. Wenn die Spalte bereits existiert, hat ADD COLUMN keine Auswirkungen auf die bestehende Spalte und führt nicht zu einem Fehler.

Bemerkung

Sie können IF NOT EXISTS nicht angeben, wenn Sie auch eine der folgenden Angaben für die neue Spalte machen:

  • AUTOINCREMENT oder IDENTITY

  • UNIQUE, PRIMARY KEY oder FOREIGN KEY

RENAME COLUMN col_name to new_col_name

Benennt die angegebene Spalte in einen neuen Namen um, der derzeit nicht für andere Spalten in der Tabelle verwendet wird.

Sie können eine Spalte, die Teil eines Gruppierungsschlüssels ist, nicht umbenennen.

Wenn Sie ein Objekt (Tabelle, Spalte usw.) umbenennen, müssen Sie andere Objekte, die darauf verweisen, mit dem neuen Namen aktualisieren.

DROP COLUMN [ IF EXISTS ] col_name [ CASCADE | RESTRICT ]

Entfernt die angegebene Spalte aus der Tabelle.

Wenn Sie nicht sicher sind, ob die Spalte bereits existiert, können Sie beim Löschen der Spalte IF EXISTS angeben. Wenn die Spalte nicht existiert, hat DROP COLUMN keine Auswirkungen und führt nicht zu einem Fehler.

Das Löschen einer Spalte ist eine reine Metadatenoperation. Die Mikropartitionen werden nicht sofort neu geschrieben, weswegen der von der Spalte belegte Speicherplatz nicht sofort freigegeben wird. In der Regel wird der Speicherplatz innerhalb einer einzelnen Mikropartition beim nächsten Überschreiben der Mikropartition freigegeben. Dies ist in der Regel der Fall, wenn die Schreiboperation aufgrund von DML (INSERT, UPDATE, DELETE) oder Reclustering erfolgt.

Data-Governance-Richtlinie und Tag-Aktionen (dataGovnPolicyTagAction)

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

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingent für Objekte.

policy_name

Bezeichner für die Richtlinie. Dieser muss für Ihr Konto eindeutig sein.

Die folgenden Klauseln gelten für alle Tabellentypen, die Zeilenzugriffsrichtlinien unterstützen, wie z. B. Tabellen, Ansichten und Ereignistabellen. Der Einfachheit halber wird in den Klauseln nur von „Tabelle“ gesprochen.

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

Fügt der Tabelle eine Zeilenzugriffsrichtlinie hinzu.

Es muss mindestens ein Spaltenname angegeben werden. Zusätzliche Spalten können mit einem Komma zwischen den einzelnen Spaltennamen angegeben werden. Verwenden Sie diesen Ausdruck, um eine Zeilenzugriffsrichtlinie sowohl zu einer Ereignistabelle als auch zu einer externen Tabelle hinzuzufügen.

DROP ROW ACCESS POLICY policy_name

Entfernt eine Zeilenzugriffsrichtlinie aus der Tabelle.

Verwenden Sie diese Klausel, um die Richtlinie in der Tabelle zu löschen.

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

Löscht mit nur einer einzigen SQL-Anweisung die für die Tabelle festgelegte Zeilenzugriffsrichtlinie und fügt eine Zeilenzugriffsrichtlinie zu derselben Tabelle hinzu.

DROP ALL ROW ACCESS POLICIES

Löscht alle Zuordnungen von Zeilenzugriffsrichtlinien aus der Tabelle.

Dieser Ausdruck ist hilfreich, wenn eine Zeilenzugriffsrichtlinie aus einem Schema gelöscht wird, bevor die Richtlinie aus einer Ereignistabelle gelöscht wird. Verwenden Sie diesen Ausdruck, um Zuordnungen von Zeilenzugriffsrichtlinien aus der Tabelle zu löschen.

SET AGGREGATION POLICY policy_name
[ ENTITY KEY (col_name [ , ... ]) ] [ FORCE ]

Weist der Tabelle eine Aggregationsrichtlinie zu.

Verwenden Sie den optionalen Parameter ENTITY KEY, um festzulegen, welche Spalten eine Entität innerhalb der Tabelle eindeutig identifizieren. Weitere Informationen dazu finden Sie unter Implementieren von Datenschutz auf Entitätsebene mit Aggregationsrichtlinien.

Verwenden Sie den optionalen Parameter FORCE, um eine bestehende Aggregationsrichtlinie atomar durch die neue Aggregationsrichtlinie zu ersetzen.

UNSET AGGREGATION POLICY

Löst die Zuordnung einer Aggregationsrichtlinie zu der Tabelle auf.

SET JOIN POLICY policy_name
[ FORCE ]

Weist der Tabelle eine Verknüpfungsrichtlinie zu.

Verwenden Sie den optionalen Parameter FORCE, um eine bestehende Verknüpfungsrichtlinie atomar durch die neue Verknüpfungsrichtlinie zu ersetzen.

UNSET JOIN POLICY

Löst eine Verknüpfungsrichtlinie von der Tabelle.

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

Gibt die Argumente an, die an den SQL-Ausdruck für die bedingte Maskierungsrichtlinie übergeben werden sollen.

Die erste Spalte in der Liste gibt die Spalte für die Richtlinienbedingungen zur Maskierung oder Tokenisierung der Daten an. Sie muss mit der Spalte übereinstimmen, für die die Maskierungsrichtlinie festgelegt ist.

Die zusätzlichen Spalten geben an, welche Spalten ausgewertet werden sollen, um zu ermitteln, ob die Daten in der jeweiligen Zeile des Abfrageergebnisses maskiert oder tokenisiert werden sollen, wenn auf der ersten Spalte eine Abfrage ausgeführt wird.

Wenn die USING-Klausel weggelassen wird, behandelt Snowflake die bedingte Maskierungsrichtlinie wie eine normale Maskierungsrichtlinie.

FORCE

Ersetzt mit nur einer Anweisung eine Maskierungs- oder Projektionsrichtlinie, die derzeit für eine Spalte festgelegt ist, durch eine andere Richtlinie.

Beachten Sie, dass die Verwendung des Schlüsselworts FORCE mit einer Maskierungsrichtlinie voraussetzt, dass der Datentyp der Richtlinie in der ALTER TABLE-Anweisung (d. h. STRING) mit dem Datentyp der aktuell für die Spalte festgelegten Maskierungsrichtlinie (d. h. STRING) übereinstimmt.

Wenn für die Spalte derzeit keine Maskierungsrichtlinie festgelegt ist, hat die Angabe dieses Schlüsselworts keine Auswirkungen.

Weitere Details dazu finden Sie unter Maskierungsrichtlinie auf einer Spalte ersetzen oder Projektionsrichtlinie ersetzen.

Suchoptimierungsaktionen (searchOptimizationAction)

ADD SEARCH OPTIMIZATION

Fügt die Suchoptimierung für die gesamte Tabelle oder bei Angabe der optionale ON-Klausel für bestimmte Spalten hinzu.

Bemerkung

Die Wartung der Suchoptimierung kann teuer werden, insbesondere wenn sich die Daten in der Tabelle häufig ändern. Weitere Informationen dazu finden Sie unter Abschätzen und Verwalten der Kosten für die Suchoptimierung.

ON search_method_with_target [, search_method_with_target ... ]

Gibt an, dass Sie die Suchoptimierung für bestimmte Spalten (statt für die gesamte Tabelle) konfigurieren möchten.

Verwenden Sie für search_method_with_target einen Ausdruck mit der folgenden Syntax:

<search_method>( <target> [ , <target> , ... ] [ , ANALYZER => '<analyzer_name>' ] )
Copy

Wobei:

  • search_method gibt eine der folgenden Methoden an, die Abfragen für einen bestimmten Prädikatstyp optimieren:

    Suchmethode

    Beschreibung

    FULL_TEXT

    Prädikate, die die Typen VARCHAR (Text) verwenden.

    EQUALITY

    Gleichheits- und IN-Prädikate.

    SUBSTRING

    Prädikate, die mit Teilzeichenfolgen und regulären Ausdrücken übereinstimmen (zum Beispiel [ NOT ] LIKE, [ NOT ] ILIKE, [ NOT ] RLIKE und REGEXP_LIKE).

  • target gibt die Spalte oder ein Sternchen (*) an.

    Je nach dem Wert von search_method können Sie eine Spalte eines der folgenden Typen angeben:

    Suchmethode

    Unterstützte Ziele

    FULL_TEXT

    Spalten der Datentypen VARCHAR (Text).

    EQUALITY

    Spalten mit numerischen, Zeichenfolgen- und binären Datentypen.

    SUBSTRING

    Spalten der Datentypen VARCHAR (Text).

    Um alle zutreffenden Spalten in der Tabelle als Ziele anzugeben, verwenden Sie das Sternchen (*).

    Beachten Sie, dass Sie für eine gegebene Suchmethode nicht sowohl Sternchen als auch spezifische Spaltennamen angeben können. Sie können jedoch Sternchen bei verschiedenen Suchmethoden angeben.

    Sie können zum Beispiel die folgenden Ausdrücke angeben:

    -- Allowed
    ON SUBSTRING(*)
    ON EQUALITY(*), SUBSTRING(*)
    
    Copy

    Sie können die folgenden Ausdrücke nicht angeben:

    -- Not allowed
    ON EQUALITY(*, c1)
    ON EQUALITY(c1, *)
    ON EQUALITY(v1:path, *)
    ON EQUALITY(c1), EQUALITY(*)
    
    Copy
  • ANALYZER => 'analyzer_name' gibt den Namen des Textanalysators an, wenn search_method FULL_TEXT ist.

    Weitere Informationen über Suchoptimierungs-Analysatoren finden Sie unter ALTER TABLE.

Wenn Sie mehr als eine Suchmethode für ein Ziel angeben möchten, trennen Sie jede nachfolgende Methode und jedes Ziel durch ein Komma:

ALTER ICEBERG TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1), EQUALITY(c2, c3);
Copy

Wenn Sie den Befehl ALTER ICEBERGTABLE … ADD SEARCH OPTIMIZATION ON … mehrfach für dieselbe Tabelle ausführen, wird jeder nachfolgende Befehl zu der bestehenden Konfiguration der Tabelle hinzugefügt. Angenommen, Sie führen die folgenden Befehle aus:

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

Damit werden Gleichheitsprädikate für die Spalten c1, c2, c3 und c4 zur Konfiguration der Tabelle hinzugefügt. Dies ist gleichbedeutend mit der Ausführung des Befehls:

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

Weitere Beispiele finden Sie unter Aktivieren der Suchoptimierung für bestimmte Spalten.

DROP SEARCH OPTIMIZATION

Entfernt die Suchoptimierung von der gesamten Tabelle oder bei Angabe der optionale ON-Klausel von bestimmten Spalten.

Bemerkung

  • Wenn eine Tabelle die Suchoptimierungseigenschaft hat, bleibt die Suchoptimierungseigenschaft erhalten, wenn Sie die Tabelle löschen und entfernen.

  • Das Entfernen der Suchoptimierungseigenschaft aus einer Tabelle und das anschließende Hinzufügen verursachen die gleichen Kosten wie das erstmalige Hinzufügen.

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

Gibt an, dass Sie die Konfiguration der Suchoptimierung für bestimmte Spalten aufheben möchten (anstatt die Suchoptimierung für die gesamte Tabelle aufzuheben).

Um die zu löschende Spaltenkonfiguration zu identifizieren, verwenden Sie eine der folgenden Optionen:

  • Geben Sie für search_method_with_target eine Methode zur Optimierung von Abfragen für eine oder mehrere bestimmte Spalten an. Verwenden Sie die oben beschriebene Syntax.

  • Geben Sie für column_name den Namen der für die Suchoptimierung konfigurierten Spalte an. Wenn Sie den Spaltennamen angeben, werden alle Ausdrücke für diese Spalte gelöscht.

  • Geben Sie für expression_id die ID eines Ausdrucks an, der in der Ausgabe des Befehls DESCRIBE SEARCH OPTIMIZATION aufgeführt ist.

Wenn Sie mehr als eine dieser Optionen angeben möchten, trennen Sie die Elemente durch ein Komma.

Sie können beliebige Kombinationen von Suchmethoden mit Zielen, Spaltennamen und Ausdruck-IDs angeben.

Weitere Beispiele finden Sie unter Löschen der Suchoptimierung für bestimmte Spalten.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

OWNERSHIP

Iceberg-Tabelle

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

Externes Volume

USAGE

Katalogintegration

Erforderlich, wenn die Tabelle eine Katalogintegration verwendet.

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Nur der Eigentümer der Tabelle (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Tabelle) oder ein Benutzer mit weitreichenderen Berechtigungen kann diesen Befehl ausführen.

  • Clustering wird nur für Tabellen unterstützt, die Snowflake als Iceberg-Katalog verwenden. Für das Hinzufügen von Clustering zu einer Iceberg-Tabelle müssen Sie auch über USAGE- oder OWNERSHIP-Berechtigungen für das Schema und die Datenbank verfügen, die die Tabelle enthalten.

  • Sie können die Datenmetrikfunktionen mit Iceberg-Tabellen verwenden, indem Sie einen ALTER TABLE-Befehl ausführen. Weitere Informationen dazu finden Sie unter Datenmetrikfunktionen verwenden, um Datenqualitätsprüfungen durchzuführen.

  • Weitere Informationen zur Verwendung der Suchoptimierung mit Iceberg-Tabellen, einschließlich Beschränkungen, finden Sie unter Unterstützung für Apache Iceberg™-Tabellen in der Dokumentation zur Suchoptimierung.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

  • Informationen zur Behebung von Problemen bei der Änderung des Parameters CATALOG_SYNC finden Sie unter Sie können eine Iceberg-Tabelle nicht ändern, wenn Sie den Parameter CATALOG_SYNC angeben

Beispiele

Das folgende Beispiel setzt ein Tag (my_tag) mit dem Wert customer auf eine Iceberg-Tabelle.

ALTER ICEBERG TABLE my_iceberg_table SET TAG my_tag = 'customer';
Copy

Das folgende Beispiel aktiviert die automatische Aktualisierung für eine bestehende, extern verwaltete Tabelle:

ALTER ICEBERG TABLE my_iceberg_table SET AUTO_REFRESH = TRUE;
Copy

In den folgenden Beispielen fügen Sie die Suchoptimierung für eine Iceberg-Tabelle hinzu und löschen sie:

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);
Copy