ALTER EXTERNAL TABLE¶
Ändert die Eigenschaften, Spalten oder Einschränkungen für eine vorhandene externe Tabelle.
- Siehe auch:
CREATE EXTERNAL TABLE, DROP EXTERNAL TABLE, SHOW EXTERNAL TABLES, DESCRIBE EXTERNAL TABLE
Syntax¶
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REFRESH [ '<relative-path>' ]
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> ADD FILES ( '<path>/[<filename>]' [ , '<path>/[<filename>'] ] )
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REMOVE FILES ( '<path>/[<filename>]' [ , '<path>/[<filename>]' ] )
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> SET AUTO_REFRESH = { TRUE | FALSE }
Manuell hinzugefügte und entfernte Partitionen
ALTER EXTERNAL TABLE <name> [ IF EXISTS ] ADD PARTITION ( <part_col_name> = '<string>' [ , <part_col_name> = '<string>' ] ) LOCATION '<path>' ALTER EXTERNAL TABLE <name> [ IF EXISTS ] DROP PARTITION LOCATION '<path>'
Parameter¶
name
Bezeichner für die zu ändernde externe 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.
REFRESH [ 'relative-path' ]
Greift auf die Staging-Datendateien zu, auf die in der Definition der externen Tabelle verwiesen wird, und aktualisiert die Tabellenmetadaten:
Neue Dateien im Pfad werden zu den Tabellenmetadaten hinzugefügt.
Änderungen an Dateien im Pfad werden in den Tabellenmetadaten aktualisiert.
Dateien, die sich nicht mehr im Pfad befinden, werden aus den Tabellenmetadaten entfernt.
Geben Sie optional einen relativen Pfad an, um die Metadaten für eine bestimmte Teilmenge der Datendateien zu aktualisieren.
Die Verwendung dieses Parameters muss nur einmal erfolgen, wenn die externe Tabelle erstellt wird. Dieser Schritt synchronisiert die Metadaten mit dem neuesten Satz zugeordneter Dateien im Stagingbereich und Pfad in der externen Tabellendefinition. Außerdem wird durch diesen Schritt sichergestellt, dass die externe Tabelle die Datendateien im angegebenen Stagingbereich und Pfad lesen kann und dass in der Definition der externen Tabelle keine Dateien übersehen wurden.
Bemerkung
Dieser Parameter wird nicht von partitionierten externen Tabellen unterstützt, wenn Partitionen manuell vom Objekteigentümer hinzugefügt werden (d. h. wenn
PARTITION_TYPE = USER_SPECIFIED
).Wenn für die externe Tabelle
TABLE_FORMAT = DELTA
festgelegt wurde, unterstütztREFRESH
keine relativen Pfade, um die Metadaten für eine bestimmte Teilmenge der Datendateien zu aktualisieren.
ADD FILES
Fügt die angegebene, durch Kommas getrennte Liste von Dateien zu den Metadaten der externen Tabelle hinzu. In der Regel werden die Parameter
ADD FILES
undREMOVE FILES
verwendet, um die Metadaten der externen Tabelle manuell zu aktualisieren (d. h. wennAUTO_REFRESH = FALSE
). Die Dateiverweise werden in der Definition der externen Tabelle als Pfade relativ zu [WITH] LOCATION ausgedrückt. Weitere Informationen dazu finden Sie unter CREATE EXTERNAL TABLE.Listen Sie den Pfad und den Dateinamen jeder Datei oder nur den Pfad auf.
Die Anweisung ALTER EXTERNAL TABLE aktualisiert automatisch die Metadaten der externen Tabelle und fügt die Dateien hinzu, sofern sie am angegebenen Speicherort vorhanden sind.
Dieser Parameter wird nicht von partitionierten externen Tabellen unterstützt, wenn Partitionen manuell vom Objekteigentümer hinzugefügt werden (d. h. wenn
PARTITION_TYPE = USER_SPECIFIED
).REMOVE FILES
Entfernt die angegebene, durch Kommas getrennte Liste von Dateien aus den Metadaten der externen Tabelle. In der Regel werden die Parameter
ADD FILES
undREMOVE FILES
verwendet, um die Metadaten der externen Tabelle manuell zu aktualisieren (d. h. wennAUTO_REFRESH = FALSE
). Die Dateiverweise werden in der Definition der externen Tabelle als Pfade relativ zu [WITH] LOCATION ausgedrückt. Weitere Informationen dazu finden Sie unter CREATE EXTERNAL TABLE.Listen Sie den Pfad und den Dateinamen jeder Datei oder nur den Pfad auf.
Die Anweisung ALTER EXTERNAL TABLE aktualisiert automatisch die Metadaten der externen Tabelle und entfernt die Dateien.
Dieser Parameter wird nicht von partitionierten externen Tabellen unterstützt, wenn Partitionen manuell vom Objekteigentümer hinzugefügt werden (d. h. wenn
PARTITION_TYPE = USER_SPECIFIED
).
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):
AUTO_REFRESH = TRUE | FALSE
Gibt an, ob Snowflake das Auslösen einer automatischen Aktualisierung der Metadaten der externen Tabelle aktivieren soll, wenn in dem in
[ WITH ] LOCATION =
angegebenen benannten externen Stagingbereich neue oder aktualisierte Datendateien verfügbar sind.Bemerkung
Sie müssen eine Ereignisbenachrichtigung für Ihren Speicherort konfigurieren, um Snowflake zu benachrichtigen, wenn neue oder aktualisierte Daten zum Einlesen in die Metadaten der externen Tabelle verfügbar sind. Weitere Informationen dazu finden Sie in der Anleitung Ihres Cloudspeicherdienstes:
- Google Cloud Storage:
Automatisches Aktualisieren externer Tabellen für Google Cloud Storage
- Microsoft Azure:
Automatisches Aktualisieren externer Tabellen für Azure Blob Storage
Dieser Parameter wird nicht von partitionierten externen Tabellen unterstützt, wenn Partitionen manuell vom Objekteigentümer hinzugefügt werden (d. h. wenn
PARTITION_TYPE = USER_SPECIFIED
).Die Einstellung dieses Parameters auf TRUE wird nicht unterstützt, wenn die externen Tabellen auf Datendateien verweisen, die in einem S3-kompatiblen externen Stagingbereich gespeichert sind.
TRUE
Snowflake ermöglicht das automatische Aktualisieren der Metadaten der externen Tabelle.
FALSE
Snowflake ermöglicht nicht das Auslösen automatischer Aktualisierungen von Metadaten externer Tabellen. Sie müssen die Metadaten der externen Tabellen manuell mit ALTER EXTERNAL TABLE … REFRESH aktualisieren, um die Metadaten mit der aktuellen Liste der Dateien im Stagingbereichspfad zu synchronisieren.
Standard:
TRUE
Manuell hinzugefügte und entfernte Partitionen¶
Verwenden Sie die folgenden Parameter, um Partitionen hinzuzufügen oder zu entfernen, wenn der Partitionstyp für die externe Tabelle benutzerspezifisch ist (d. h. PARTITION_TYPE = USER_SPECIFIED
):
ADD PARTITION ( <part_col_name> = '<string>' [ , <part_col_name> = '<string>' , ... ] ) LOCATION '<path>'
Fügt manuell eine Partition für eine oder mehrere Partitionsspalten hinzu, die für die externe Tabelle an einem bestimmten Speicherort (d. h. Pfad) definiert wurden.
Bemerkung
Die maximale Länge der Namen von benutzerdefinierten Partitionsspalten beträgt 32 Zeichen.
Beim Hinzufügen einer Partition werden auch alle neuen oder aktualisierten Dateien an diesem Speicherort zu den Metadaten der externen Tabelle hinzugefügt.
DROP PARTITION LOCATION '<path>'
Löscht manuell alle Partitionen an einem bestimmten Speicherort (d. h. Pfad).
Beim Löschen einer Partition werden auch alle Dateien an diesem Speicherort aus den Metadaten der externen Tabelle entfernt.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
OWNERSHIP |
Externe 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 |
Stagingbereich |
Erfordert das manuelle Aktualisieren der Metadaten der externen Tabelle |
USAGE |
Dateiformat |
Erfordert das manuelle Aktualisieren der Metadaten der externen Tabelle |
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
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 externen Tabelle (d. h. die Rolle mit der Berechtigung OWNERSHIP für die externe Tabelle) oder ein Benutzer mit weitreichenderen Berechtigungen kann diesen Befehl ausführen.
Die folgenden Befehle können in expliziten Transaktionen verwendet werden (mit BEGIN … COMMIT):
ALTER EXTERNAL TABLE ... REFRESH
ALTER EXTERNAL TABLE ... ADD FILES
ALTER EXTERNAL TABLE ... REMOVE FILES
Explizite Transaktionen können verwendet werden, um beim manuellen Ersetzen aktualisierter Dateien in den Metadaten der externen Tabelle einen konsistenten Status sicherzustellen.
Verwenden Sie für das Hinzufügen oder Entfernen von Spalten einer externen Tabelle die folgende Syntax:
- Spalte hinzufügen:
ALTER TABLE <name> ADD COLUMN ( <col_name> <col_type> AS <expr> ) [, ...]
- Spalte umbenennen:
ALTER TABLE <name> RENAME COLUMN <col_name> to <new_col_name>
- Spalte löschen:
ALTER TABLE <name> DROP COLUMN <col_name>
Bemerkung
Die Standardspalten VALUE und METADATA$FILENAME können nicht gelöscht werden.
Entsprechende Beispiele finden Sie unter dem Thema ALTER TABLE.
Um eine Zeilenzugriffsrichtlinie für eine externe Tabelle hinzuzufügen oder zu löschen oder ein Tag zuzuordnen oder zu entziehen, verwenden Sie den Befehl ALTER TABLE.
Sie können jedoch eine externe Tabelle mit einer Zeilenzugriffsrichtlinie und einem Tag auf der Tabelle erstellen. Siehe CREATE EXTERNAL TABLE.
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.
Beispiele¶
Manuelles Aktualisieren von Metadaten¶
Aktualisieren Sie den gesamten Satz an Metadaten der externen Tabelle manuell, basierend auf Änderungen in den referenzierten Datendateien:
ALTER EXTERNAL TABLE exttable_json REFRESH;
Ähnlich wie das erste Beispiel, aber aktualisieren Sie manuell nur einen Unterpfad der Metadaten einer externen Tabelle:
CREATE OR REPLACE STAGE mystage
URL='<cloud_platform>://twitter_feed/logs/'
.. ;
-- Create the external table
-- 'daily' path includes paths in </YYYY/MM/DD/> format
CREATE OR REPLACE EXTERNAL TABLE daily_tweets
WITH LOCATION = @twitter_feed/daily/;
-- Refresh the metadata for a single day of data files by date
ALTER EXTERNAL TABLE exttable_part REFRESH '2018/08/05/';
Manuelles Hinzufügen oder Entfernen von Dateien¶
Fügen Sie den Metadaten der externen Tabelle eine explizite Liste von Dateien hinzu:
ALTER EXTERNAL TABLE exttable1 ADD FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');
Entfernen Sie eine explizite Liste von Dateien aus den Metadaten der externen Tabelle:
ALTER EXTERNAL TABLE exttable1 REMOVE FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');
Ersetzen Sie für eine explizite Transaktion eine aktualisierte Protokolldatei für Dezember 2019 in den Metadaten der externen Tabelle:
BEGIN;
ALTER EXTERNAL TABLE extable1 REMOVE FILES ('2019/12/log1.json.gz');
ALTER EXTERNAL TABLE extable1 ADD FILES ('2019/12/log1.json.gz');
COMMIT;
Manuelles Hinzufügen oder Entfernen von Partitionen¶
Fügen Sie manuell Partitionen an einem bestimmten Speicherort zu den Partitionsspalten hinzu:
ALTER EXTERNAL TABLE et2 ADD PARTITION(col1='2022-01-24', col2='a', col3='12') LOCATION '2022/01';
Snowflake fügt die Partitionen zu den Metadaten der externen Tabelle hinzu. Bei dieser Operation werden auch alle neuen Datendateien am angegebenen Speicherort zu den Metadaten hinzugefügt.
Entfernen Sie manuell die Partitionen an einem bestimmten Speicherort:
ALTER EXTERNAL TABLE et2 DROP PARTITION LOCATION '2022/01';
Snowflake entfernt die Partitionen aus den Metadaten der externen Tabelle. Bei dieser Operation werden auch alle Datendateien am angegebenen Speicherort aus den Metadaten entfernt.