

 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](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="iceberg-alter-table"></a>

`ALTER TABLE`le 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, `{{iceberg_table}}` può essere una delle seguenti:

```
-- 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](referencing-iceberg-tables.md).

Considerate quanto segue quando utilizzate `ALTER TABLE` le istruzioni:
+ `ALTER TABLE`le istruzioni attualmente supportano solo le tabelle Iceberg v2.
+ Tutte le `ALTER TABLE` istruzioni sono operazioni basate solo sui metadati.
+ `ALTER TABLE`le istruzioni non supportano tabelle con colonne di tipo complesso.

**Contents**
+ [ALTER TABLE RENAME COLUMN](#iceberg-alter-table-rename-column)
+ [ALTERA LA ADD/DROP COLONNA DELLA TABELLA](#iceberg-alter-table-add-drop-column)
+ [MODIFICA TABELLA, MODIFICA COLONNA](#iceberg-alter-table-alter-column)
+ [ALTERARE LA TABELLA, IMPOSTARE LE PROPRIETÀ DELLA TABELLA](#iceberg-alter-table-set-properties)
+ [ALTER TABLE ADD, DROP e REPLACE PARTITION FIELD](#iceberg-alter-table-partition-field)

## ALTER TABLE RENAME COLUMN
<a name="iceberg-alter-table-rename-column"></a>

```
ALTER TABLE {{iceberg_table}}
RENAME [COLUMN] {{col_name}} TO {{new_name}};
```

`ALTER TABLE RENAME COLUMN`rinomina una colonna esistente. `{{col_name}}`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.

**Nota**  
`ALTER TABLE RENAME COLUMN`non è supportato per AWS Lake Formation le tabelle registrate.

## ALTERA LA ADD/DROP COLONNA DELLA TABELLA
<a name="iceberg-alter-table-add-drop-column"></a>

```
ALTER TABLE {{iceberg_table}}
ADD [COLUMN] {{col_name}} {{col_type}};
```

```
ALTER TABLE {{iceberg_table}}
DROP [COLUMN] {{col_name}};
```

`ADD COLUMN`aggiunge 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 IcebergTipi di dati supportati](querying-iceberg-supported-data-types.md).

`ADD COLUMN`è un'operazione basata solo sui metadati. I valori delle colonne appena aggiunte nelle righe esistenti sono. `NULL`

`DROP COLUMN`elimina 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](#iceberg-alter-table-partition-field).

## MODIFICA TABELLA, MODIFICA COLONNA
<a name="iceberg-alter-table-alter-column"></a>

```
ALTER TABLE {{iceberg_table}}
    ALTER COLUMN {{column_name}} TYPE {{updated_data_type}};
```

`ALTER TABLE ALTER COLUMN`modifica il tipo di dati di una colonna esistente. È consentito solo l'ampliamento del tipo, non il restringimento. Poiché i dati non vengono riscritti dopo la`ALTER`, 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 TABLE {{iceberg_table}} (cint int) USING ICEBERG LOCATION 's3://{{your-bucket-name}}/prefix/';
```

Può essere ampliata con questa dichiarazione: `ALTER`

```
ALTER TABLE {{iceberg_table}} ALTER 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 IcebergTipi di dati supportati](querying-iceberg-supported-data-types.md)

L'ampliamento del tipo di colonna che appartiene alle specifiche di partizione esistenti non è supportato.

## ALTERARE LA TABELLA, IMPOSTARE LE PROPRIETÀ DELLA TABELLA
<a name="iceberg-alter-table-set-properties"></a>

```
ALTER TABLE {{iceberg_table}}
SET 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: `brotli``gzip`,`snappy`,`uncompressed`, e`zstd`.

## ALTER TABLE ADD, DROP e REPLACE PARTITION FIELD
<a name="iceberg-alter-table-partition-field"></a>

```
ALTER TABLE {{iceberg_table}}
    ADD PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    DROP PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    REPLACE PARTITION FIELD {{column_name}} | {{transform_function}}
        WITH {{column_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. Successivamente`ALTER`, 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 `ADD` o`REPLACE ... 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 TABLE` Per ulteriori informazioni, consulta [CREATE TABLE](iceberg-writes-sql-syntax.md#iceberg-writes-create-table).

  Ad esempio, quando si dispone di una tabella:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ```

  Quanto segue fallisce perché `ship_date` fa già parte di un campo di partizione esistente:

  ```
  ALTER TABLE {{iceberg_table}} ADD 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 TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} ADD PARTITION FIELD bucket(256, item_id);
  ```

  Le specifiche della partizione della tabella sono le stesse di:

  ```
  CREATE TABLE {{iceberg_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 TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} DROP 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 TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} REPLACE PARTITION FIELD year(ship_date) WITH month(ship_date);
  ```

  Dopodiché`ALTER`, la partizione della tabella diventa. `(month(ship_date), bucket(256, item_id))`
+ La `void` trasformazione non è supportata nelle istruzioni di partizione. `ALTER`