Amazon Redshift unterstützt ab Patch 198 nicht mehr die Erstellung neuer Python-UDFs. Bestehende Python-UDFs werden bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im Blog-Posting
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tabellendefinitionen ändern
ALTER TABLEAnweisungen werden verwendet, um Tabellendefinitionen, einschließlich Schema, Partitionsspezifikationen und Eigenschaften, zu ändern. Sie können diese DDL-Anweisungen verwenden, um Ihre Iceberg-Tabellen direkt über Amazon Redshift zu verwalten.
Alle ALTER TABLE Anweisungen unterstützen die Verwendung externer Schemareferenzen oder dreiteiliger Notationsreferenzen für Iceberg-Tabellen. In den folgenden Syntaxbeispielen kann es sich um eine der folgenden Optionen handeln:iceberg_table
-- External schema notation:<external_schema>.<table_name>-- Three-part notation for S3 table buckets: "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>-- Three-part notation for the awsdatacatalog root catalog: awsdatacatalog.<database_name>.<table_name>
Weitere Informationen finden Sie unter Verweisen auf Iceberg-Tabellen in Amazon Redshift.
Beachten Sie bei der Verwendung von ALTER TABLE Anweisungen Folgendes:
-
ALTER TABLEAnweisungen unterstützen derzeit nur Iceberg v2-Tabellen. -
Alle
ALTER TABLEAnweisungen sind reine Metadaten-Operationen. -
ALTER TABLEAnweisungen unterstützen keine Tabellen mit komplexen Spalten.
Inhalt
ALTER TABLE RENAME COLUMN
ALTER TABLEiceberg_tableRENAME [COLUMN]col_nameTOnew_name;
ALTER TABLE RENAME COLUMNbenennt eine bestehende Spalte um. Dabei kann es sich um eine Partitionsspalte oder eine nicht partitionierte Spalte handeln. Nach der Umbenennung ändern sich der Spaltendatentyp und die Partitionsspezifikation nicht.col_name
Anmerkung
ALTER TABLE RENAME COLUMNwird für AWS Lake Formation registrierte Tabellen nicht unterstützt.
ADD/DROP TABELLENSPALTE ÄNDERN
ALTER TABLEiceberg_tableADD [COLUMN]col_namecol_type;
ALTER TABLEiceberg_tableDROP [COLUMN]col_name;
ADD COLUMNfügt einer vorhandenen Iceberg-Tabelle eine Spalte hinzu. Sie können jeden Datentyp verwenden, der von Amazon Redshift Iceberg Writes unterstützt wird. Weitere Informationen finden Sie unter Mit Apache-Iceberg-Tabellen unterstützte Datentypen.
ADD COLUMNist eine reine Metadaten-Operation. Die Werte neu hinzugefügter Spalten in vorhandenen Zeilen sind. NULL
DROP COLUMNlöscht eine Spalte aus einer vorhandenen Iceberg-Tabelle. Bei partitionierten Tabellen können Sie keine Spalte löschen, die zur aktuellen Partitionsspezifikation gehört. Sie müssen zuerst das Partitionsfeld entfernen, das die Spalte betrifft, bevor Sie die Spalte löschen. Weitere Informationen finden Sie unter PARTITIONSFELD „TABELLE HINZUFÜGEN“, „LÖSCHEN“ und „ERSETZEN“ ÄNDERN.
TABELLE ÄNDERN, SPALTE ÄNDERN
ALTER TABLEiceberg_tableALTER COLUMNcolumn_nameTYPEupdated_data_type;
ALTER TABLE ALTER COLUMNändert den Datentyp einer vorhandenen Spalte. Nur eine Erweiterung des Typs ist zulässig, keine Verengung. Da Daten nach dem nicht neu geschrieben werdenALTER, kann eine Eingrenzung der Datentypen zu einem Überlauf führen, wenn die vorhandenen Tabellendaten verwendet werden. Die folgenden Typerweiterungen sind gemäß der Iceberg-Spezifikation zulässig:
int → bigint float → double decimal(P, S) → decimal(P2, S) where P2 > P (scale cannot be changed)
In Amazon Redshift können Datentypen Aliase haben. Beispielsweise verwenden 4-Byte-Ganzzahlen den Typnamen oder. int int4 Solange sie in Iceberg-Typen auf 4-Byte-Ganzzahlen vom Typ int abgebildet sind, ist eine Typerweiterung auf 8-Byte-Ganzzahlen zulässig.
Beispielsweise wird eine Iceberg-Tabelle mit 4-Byte-Integer-Typen erstellt:
CREATE TABLEiceberg_table(cint int) USING ICEBERG LOCATION 's3://your-bucket-name/prefix/';
Sie kann durch diese Aussage erweitert werden: ALTER
ALTER TABLEiceberg_tableALTER COLUMN cint TYPE int8;
Die vollständige Liste der Datentypzuordnungen zwischen Amazon Redshift Redshift-Typen und Iceberg-Typen finden Sie unter. Mit Apache-Iceberg-Tabellen unterstützte Datentypen
Die Erweiterung des Typs einer Spalte, die zur vorhandenen Partitionsspezifikation gehört, wird nicht unterstützt.
TABELLE ÄNDERN, TABELLENEIGENSCHAFTEN FESTLEGEN
ALTER TABLEiceberg_tableSET TABLE PROPERTIES ( 'compression_type' = 'compression_value');
Mit dieser Anweisung können Sie die Standardeigenschaft der Tabelle überschreiben. Derzeit ist die einzige Tabelleneigenschaft, die für diese Anweisung zulässig istcompression_type. Sie können sie überschreiben, um einen anderen Komprimierungstyp für die Parquet-Dateien der Iceberg-Tabelle zu verwenden. Daten, die nach dem eingefügt werden, ALTER verwenden den neuen Komprimierungstyp.
Die möglichen Werte für compression_type sind: brotligzip,snappy,uncompressed, undzstd.
PARTITIONSFELD „TABELLE HINZUFÜGEN“, „LÖSCHEN“ und „ERSETZEN“ ÄNDERN
ALTER TABLEiceberg_tableADD PARTITION FIELDcolumn_name|transform_function;
ALTER TABLEiceberg_tableDROP PARTITION FIELDcolumn_name|transform_function;
ALTER TABLEiceberg_tableREPLACE PARTITION FIELDcolumn_name|transform_functionWITHcolumn_name|transform_function;
Die [ADD | DROP | REPLACE] PARTITION FIELD Anweisungen ermöglichen es Ihnen, die bestehende Tabellenpartitionsspezifikation zu ändern, wodurch die Partitionsentwicklung über Amazon Redshift unterstützt wird.
Die ALTER Anweisungen für die Partitionsspezifikation ändern nur die Tabellenmetadaten und partitionieren die vorhandenen Tabellendaten nicht neu. Danach folgen neue DatenALTER, die in die Tabelle eingefügt werden, die neu definierte Partitionsspezifikation.
Beachten Sie die folgenden Einschränkungen für diese Anweisungen:
-
Wenn Sie mit
ADDoder ein neues Partitionsfeld definierenREPLACE ... WITH ..., darf das neue Feld keine Spalte enthalten, die bereits Teil anderer Partitionsfelder ist. Dies ist dieselbe Einschränkung wie bei der Definition der ursprünglichen Partitionsspezifikation unterCREATE TABLE. Weitere Informationen finden Sie unter CREATE TABLE.Wenn Sie beispielsweise eine Tabelle haben:
CREATE TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...;Folgendes schlägt fehl, weil
ship_datees bereits Teil eines vorhandenen Partitionsfeldes ist:ALTER TABLEiceberg_tableADD PARTITION FIELD bucket(128, ship_date); -
Beim Hinzufügen eines neuen Partitionsfeldes wird das neu hinzugefügte Feld immer als letzte Partitionsebene der Tabelle behandelt. Beispiel:
CREATE TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...; ALTER TABLEiceberg_tableADD PARTITION FIELD bucket(256, item_id);Die Spezifikation der Tabellenpartition ist dieselbe wie:
CREATE TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; -
Wenn Sie ein Partitionsfeld löschen, ist es nicht auf die letzte Partitionsebene beschränkt. Sie können jedes vorhandene Partitionsfeld löschen. Beispiel:
CREATE TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; ALTER TABLEiceberg_tableDROP PARTITION FIELD year(ship_date);Danach wird
ALTERdie Tabelle nur noch nach partitioniertbucket(256, item_id). -
Beim Aufruf
REPLACE PARTITION FIELD ... WITH ...kann das zu ersetzende Partitionsfeld ein beliebiges Feld in der Spezifikation sein und ist nicht auf das letzte Feld beschränkt. Beispiel:CREATE TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; ALTER TABLEiceberg_tableREPLACE PARTITION FIELD year(ship_date) WITH month(ship_date);Danach wird
ALTER(month(ship_date), bucket(256, item_id))die Tabellenpartition. -
Die
voidTransformation wird inALTERPartitionsanweisungen nicht unterstützt.