Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dalla Patch 198. Le UDF Python esistenti continueranno a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modifica delle definizioni delle tabelle
ALTER TABLEle istruzioni vengono utilizzate per modificare le definizioni delle tabelle, inclusi lo schema, le specifiche delle partizioni e le proprietà. Puoi utilizzare queste istruzioni DDL per gestire le tue tabelle Iceberg direttamente tramite Amazon Redshift.
Tutte le ALTER TABLE istruzioni supportano l'utilizzo di riferimenti a schemi esterni o riferimenti di notazione in tre parti per le tabelle Iceberg. Negli esempi di sintassi riportati di seguito, può essere una delle seguenti: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>
Per ulteriori informazioni, consulta Riferimento alle tabelle Iceberg in Amazon Redshift.
Considerate quanto segue quando utilizzate ALTER TABLE le istruzioni:
-
ALTER TABLEle istruzioni attualmente supportano solo le tabelle Iceberg v2. -
Tutte le
ALTER TABLEistruzioni sono operazioni basate solo sui metadati. -
ALTER TABLEle istruzioni non supportano tabelle con colonne di tipo complesso.
Indice
ALTER TABLE RENAME COLUMN
ALTER TABLEiceberg_tableRENAME [COLUMN]col_nameTOnew_name;
ALTER TABLE RENAME COLUMNrinomina una colonna esistente. Può essere una colonna di partizione o una colonna non partizionata. Dopo la ridenominazione, il tipo di dati della colonna e le specifiche della partizione non cambiano.col_name
Nota
ALTER TABLE RENAME COLUMNnon è supportato per AWS Lake Formation le tabelle registrate.
ALTERA LA ADD/DROP COLONNA DELLA TABELLA
ALTER TABLEiceberg_tableADD [COLUMN]col_namecol_type;
ALTER TABLEiceberg_tableDROP [COLUMN]col_name;
ADD COLUMNaggiunge una colonna a una tabella Iceberg esistente. Puoi utilizzare qualsiasi tipo di dati supportato dalle scritture di Amazon Redshift Iceberg. Per ulteriori informazioni, consulta Tipi di dati supportati con le tabelle Apache Iceberg.
ADD COLUMNè un'operazione basata solo sui metadati. I valori delle colonne appena aggiunte nelle righe esistenti sono. NULL
DROP COLUMNelimina una colonna da una tabella Iceberg esistente. Per le tabelle partizionate, non è possibile eliminare una colonna che appartiene alle specifiche di partizione correnti. È necessario rimuovere il campo di partizione che include la colonna prima di eliminare la colonna. Per ulteriori informazioni, consulta ALTER TABLE ADD, DROP e REPLACE PARTITION FIELD.
MODIFICA TABELLA, MODIFICA COLONNA
ALTER TABLEiceberg_tableALTER COLUMNcolumn_nameTYPEupdated_data_type;
ALTER TABLE ALTER COLUMNmodifica il tipo di dati di una colonna esistente. È consentito solo l'ampliamento del tipo, non il restringimento. Poiché i dati non vengono riscritti dopo laALTER, il restringimento dei tipi di dati potrebbe causare un overflow quando si utilizzano i dati della tabella esistenti. I seguenti ampliamenti di tipo sono consentiti in base alle specifiche Iceberg:
int → bigint float → double decimal(P, S) → decimal(P2, S) where P2 > P (scale cannot be changed)
In Amazon Redshift, i tipi di dati possono avere alias. Ad esempio, gli interi a 4 byte utilizzano il nome del tipo o. int int4 Finché sono mappati su int a 4 byte nei tipi Iceberg, è consentito l'ampliamento del tipo a numeri interi a 8 byte.
Ad esempio, una tabella Iceberg viene creata utilizzando tipi interi a 4 byte:
CREATE TABLEiceberg_table(cint int) USING ICEBERG LOCATION 's3://your-bucket-name/prefix/';
Può essere ampliata con questa dichiarazione: ALTER
ALTER TABLEiceberg_tableALTER COLUMN cint TYPE int8;
Per l'elenco completo delle mappature dei tipi di dati tra i tipi di Amazon Redshift e i tipi Iceberg, consulta. Tipi di dati supportati con le tabelle Apache Iceberg
L'ampliamento del tipo di colonna che appartiene alle specifiche di partizione esistenti non è supportato.
ALTERARE LA TABELLA, IMPOSTARE LE PROPRIETÀ DELLA TABELLA
ALTER TABLEiceberg_tableSET TABLE PROPERTIES ( 'compression_type' = 'compression_value');
Questa istruzione consente di sovrascrivere la proprietà predefinita della tabella. Attualmente l'unica proprietà della tabella consentita per questa istruzione ècompression_type. È possibile sovrascriverla per utilizzare un tipo di compressione diverso per i file Parquet della tabella Iceberg. I dati inseriti dopo ALTER utilizzano il nuovo tipo di compressione.
I valori possibili per compression_type sono: brotligzip,snappy,uncompressed, ezstd.
ALTER TABLE ADD, DROP e REPLACE PARTITION FIELD
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;
Le [ADD | DROP | REPLACE] PARTITION FIELD istruzioni consentono di modificare le specifiche delle partizioni di tabella esistenti, supportando l'evoluzione delle partizioni tramite Amazon Redshift.
Le ALTER istruzioni per le specifiche di partizione modificano solo i metadati della tabella e non ripartizionano i dati della tabella esistente. SuccessivamenteALTER, i nuovi dati inseriti nella tabella seguono le specifiche di partizione appena definite.
Considerate le seguenti limitazioni per queste istruzioni:
-
Quando si definisce un nuovo campo di partizione tramite
ADDoREPLACE ... WITH ..., il nuovo campo non può includere una colonna che fa già parte di altri campi di partizione. Questa è la stessa limitazione di quando si definiscono le specifiche iniziali della partizione in.CREATE TABLEPer ulteriori informazioni, consulta CREATE TABLE.Ad esempio, quando si dispone di una tabella:
CREATE TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...;Quanto segue fallisce perché
ship_datefa già parte di un campo di partizione esistente:ALTER TABLEiceberg_tableADD PARTITION FIELD bucket(128, ship_date); -
Quando si aggiunge un nuovo campo di partizione, il campo appena aggiunto viene sempre considerato come l'ultimo livello di partizione della tabella. Esempio:
CREATE TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...; ALTER TABLEiceberg_tableADD PARTITION FIELD bucket(256, item_id);Le specifiche della partizione della tabella sono le stesse di:
CREATE TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; -
Quando si elimina un campo di partizione, non si limita all'ultimo livello di partizione. È possibile eliminare qualsiasi campo di partizione esistente. Esempio:
CREATE TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; ALTER TABLEiceberg_tableDROP PARTITION FIELD year(ship_date);Dopodiché
ALTER, la tabella viene partizionata solo da.bucket(256, item_id) -
Durante la chiamata
REPLACE PARTITION FIELD ... WITH ..., il campo di partizione da sostituire può essere qualsiasi campo nelle specifiche e non è limitato all'ultimo campo. Esempio: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);Dopodiché
ALTER, la partizione della tabella diventa.(month(ship_date), bucket(256, item_id)) -
La
voidtrasformazione non è supportata nelle istruzioni di partizione.ALTER