

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà 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à.

# Comandi SQL
<a name="iceberg-writes-sql-syntax"></a>

Le tabelle Apache Iceberg in Amazon Redshift offrono un modo efficace per gestire set di dati analitici di grandi dimensioni nel tuo data lake. Queste tabelle supportano le transazioni ACID, l'evoluzione degli schemi e le funzionalità di viaggio nel tempo, mantenendo al contempo prestazioni elevate per i carichi di lavoro di analisi. Utilizzando le tabelle Apache Iceberg, puoi organizzare e partizionare i dati in modo efficiente, controllare i formati e la compressione dei file e integrarti perfettamente con altri servizi. AWS 

È possibile creare tabelle Iceberg partizionate e non partizionate utilizzando i comandi and. `CREATE TABLE ... USING ICEBERG` `CREATE TABLE ... USING ICEBERG AS SELECT` È possibile fare riferimento alle tabelle Iceberg utilizzando una notazione dello schema esterna () o una notazione in tre parti (). `external_schema.table_name` `"catalog_name".database_name.table_name` Gli esempi in questa sezione illustrano entrambi i metodi.

Dopo aver creato una tabella, è possibile aggiungere dati utilizzando `INSERT` i comandi standard. Tieni presente che, sebbene Amazon Redshift funzioni con molti tipi di dati Iceberg, potrebbe essere necessario convertire alcuni formati di dati quando inserisci informazioni. 

Puoi visualizzare le tabelle Iceberg usando il comando. `SHOW TABLES` Se vuoi rimuovere una tabella da AWS Glue Data Catalog, puoi usare il `DROP TABLE` comando. Nota che questo rimuove solo la registrazione della tabella. I dati effettivi rimarranno in archiviazione finché non li elimini separatamente.

Tutte le altre istruzioni SQL, come`DELETE`,`UPDATE`, e `MERGE``ALTER TABLE`, non sono ancora supportate nelle tabelle Iceberg.

Le seguenti sezioni illustrano la sintassi SQL per la creazione, l'inserimento e la gestione di tabelle Iceberg in Amazon Redshift.

**Contents**
+ [CREATE TABLE](#iceberg-writes-create-table)
+ [CREATE TABLE AS SELECT](#iceberg-writes-create-table-as-select)
+ [SHOW TABLE](#iceberg-writes-show-table)
+ [INSERT INTO](#iceberg-writes-insert-into)
+ [DROP TABLE](#iceberg-writes-drop-table)

## CREATE TABLE
<a name="iceberg-writes-create-table"></a>

```
CREATE TABLE [IF NOT EXISTS] <external_schema>.<table_name> (
  column_name data_type [, ...]
)
USING ICEBERG
[LOCATION 's3://your-bucket-name/prefix/']
[PARTITIONED BY [[column_name | transform_function]], ...]
[TABLE PROPERTIES ('compression_type'='<compression_value>')]
```

Puoi anche usare una notazione in tre parti per i bucket di tabelle S3:

```
CREATE TABLE "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> (
  column_name data_type [, ...]
)
USING ICEBERG
[PARTITIONED BY [[column_name | transform_function]], ...]
[TABLE PROPERTIES ('compression_type'='<compression_value>')]
```

Nota che `<external_schema>` deve essere un nome di schema esterno esistente in cui verrà creata la tabella esterna. Per ulteriori informazioni su come creare e gestire schemi esterni, consulta [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) nella documentazione di Amazon Redshift.

La `LOCATION` clausola definisce la posizione della tabella per questa tabella Iceberg appena creata. Per le tabelle Amazon S3, `LOCATION` non può essere specificato poiché la posizione della tabella è determinata dal catalogo delle tabelle Amazon S3 (). `s3tablescatalog` 

In tutti gli altri casi, `LOCATION` è obbligatorio e deve essere una posizione vuota, il che significa che non ci sono oggetti Amazon S3 esistenti che condividono lo stesso bucket e lo stesso prefisso. Tieni presente che la regione del bucket Amazon S3 deve trovarsi nella stessa regione del cluster Amazon Redshift. 

Tuttavia, AWS fornisce un metodo per replicare i dati dalle tabelle Iceberg archiviate in una AWS Glue Data Catalog in una Regione AWS diversa Regione AWS, che consente di replicare la scrittura in una regione diversa. Per ulteriori informazioni, consulta [Replicare](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/best-practices-workloads.html#workloads-replication) i dati in modo incrociato. Regioni AWS

`PARTITIONED BY`definisce la partizione della tabella Iceberg. Amazon Redshift supporta tutte le trasformazioni di partizione Iceberg v2 ad eccezione di. `void` Ecco l'elenco delle trasformazioni supportate:
+ **identità**
+ **secchio [N]**
+ **troncare [W]**
+ **anno**
+ **mese**
+ **giorno**
+ **ora**

Per le definizioni complete di queste trasformazioni e dei tipi di dati compatibili, consulta [Partition Transforms](https://iceberg.apache.org/spec/#partition-transforms) nella documentazione di Apache Iceberg.

Supporta il partizionamento a più livelli. `PARTITIONED BY` Ad esempio, puoi esegui il seguente comando:

```
CREATE TABLE ...
USING ICEBERG
LOCATION ...
PARTITIONED BY (bucket(16, id), year(ship_date));
```

Tuttavia, Amazon Redshift non supporta l'utilizzo di una singola colonna in più di una trasformazione. Ad esempio, la seguente sintassi non è supportata:

```
CREATE TABLE ...
USING ICEBERG
LOCATION ...
PARTITIONED BY (bucket(16, ship_date), year(ship_date));
```

La `TABLE PROPERTIES` clausola definisce le proprietà aggiuntive della tabella per questa tabella Iceberg. L'unica proprietà della tabella che supportiamo è quella `compression_type` che definisce la compressione predefinita dei file di dati di Parquet. Se questo non è specificato, `snappy` viene utilizzato come codec di compressione. I valori possibili per `compression_type` sono:`zstd`,`brotli`, `gzip``snappy`, e`uncompressed`.

**Nota**  
`CREATE TABLE ... LIKE ...`non è supportato per le tabelle Iceberg. Inoltre, le tabelle Iceberg non supportano i vincoli di colonna e gli attributi di colonna come fa la tabella RMS.

In alternativa, puoi creare e popolare una tabella Iceberg con un'unica operazione utilizzando: `CREATE TABLE AS SELECT`

## CREATE TABLE AS SELECT
<a name="iceberg-writes-create-table-as-select"></a>

```
CREATE TABLE <external_schema>.<table_name> [(
  column_name[, ...]
)]
USING ICEBERG
[LOCATION 's3://your-bucket-name/prefix/']
[PARTITIONED BY [[column_name | transform_function]], ...]
[TABLE PROPERTIES ('compression_type'='<compression-value>')]
AS
SELECT query
```

Puoi anche usare la notazione in tre parti per creare tabelle nei cataloghi montati automaticamente:

```
CREATE TABLE "<catalog_name>".<database_name>.<table_name> [(
  column_name[, ...]
)]
USING ICEBERG
[LOCATION 's3://your-bucket-name/prefix/']
[PARTITIONED BY [[column_name | transform_function]], ...]
[TABLE PROPERTIES ('compression_type'='<compression-value>')]
AS
SELECT query
```

È simile all'`CREATE TABLE`istruzione tranne che `CREATE` è seguita da un'`SELECT`istruzione per popolare la tabella con i risultati della query. `SELECT`

La `CREATE TABLE` clausola qui non consente più di specificare i tipi di dati poiché i tipi di dati delle colonne verranno decisi `SELECT` dalla query.

Se la `SELECT` query fallisce per qualsiasi motivo, questa avrà esito negativo e la tabella Iceberg non verrà creata.

Puoi visualizzare la struttura delle tue tabelle Iceberg usando: `SHOW TABLE`

## SHOW TABLE
<a name="iceberg-writes-show-table"></a>

```
SHOW TABLE <external_schema>.<table_name>
```

Puoi anche usare la notazione in tre parti con cataloghi montati automaticamente:

```
SHOW TABLE "<catalog_name>".<database_name>.<table_name>
```

`SHOW TABLE`visualizza l'`CREATE TABLE`istruzione per la tabella Iceberg. Il comando mostrerà i risultati appropriati in base al tipo di tabella. Di seguito è riportato un esempio dell'`SHOW TABLE`output per la tabella Iceberg:

```
CREATE TABLE my_schema.items (id int, price decimal(5, 2))
USING ICEBERG
LOCATION 's3://my_s3_bucket/items/'
PARTITIONED BY (bucket(16, id))
TABLE PROPERTIES ('compression_type'='snappy')
```

**Nota**  
Per le tabelle Amazon S3, poiché la posizione della tabella è gestita dal catalogo di tabelle Amazon S3, `LOCATION` la clausola verrà omessa nei risultati. `SHOW TABLE`

Dopo aver creato le tabelle, puoi aggiungere dati utilizzando: `INSERT INTO`

## INSERT INTO
<a name="iceberg-writes-insert-into"></a>

```
INSERT INTO <external_schema>.<table_name> [(column_name [, ...])] VALUES (...)
INSERT INTO <external_schema>.<table_name> [(column_name [, ...])] (SELECT query)

-- Using three-part notation for S3 table buckets:
INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [(column_name [, ...])] VALUES (...)
INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [(column_name [, ...])] (SELECT query)
```

È possibile creare `INSERT INTO` una tabella Iceberg utilizzando la sintassi precedente. Se viene utilizzata una `VALUES` clausola, si forniscono i valori per le colonne elencate da `column_name` o per tutte le colonne se viene omessa `column_name` una parte.

Quando i dati vengono inseriti in una tabella partizionata, le nuove righe vengono distribuite in base alla specifica di partizione predefinita. Se per qualsiasi motivo la `SELECT` query fallisce, la query avrà esito negativo e nessun dato verrà inserito nella tabella Iceberg.

È possibile accedere a `INSERT INTO` una tabella Iceberg non creata da Amazon Redshift. Tuttavia, ci sono alcune limitazioni:
+ La tabella deve essere una tabella Iceberg v2.
+ La tabella deve utilizzare Parquet come formato dati predefinito.
+ La tabella non deve avere la compressione dei metadati impostata su True.
+ La tabella non deve essere abilitata Write-Audit-Publish (WAP).

Per rimuovere una tabella Iceberg dal catalogo, usa il `DROP TABLE` comando:

## DROP TABLE
<a name="iceberg-writes-drop-table"></a>

```
DROP TABLE <external_schema>.<table_name>
```

Puoi anche usare la notazione in tre parti con cataloghi montati automaticamente:

```
DROP TABLE "<catalog_name>.<database_name>.<table_name>
```

L'eliminazione di una tabella Iceberg è un'operazione che riguarda solo i metadati. Rimuove la voce della tabella da AWS Glue Data Catalog un catalogo di tabelle Amazon S3, se si tratta di una tabella Amazon S3. Amazon Redshift non pulisce o elimina alcun file di dati o file di metadati esistente sotto la posizione della tabella. Puoi utilizzare le funzionalità delle tabelle AWS Glue Amazon S3 per rimuovere file orfani. Per AWS Glue, consulta [Eliminazione](https://docs.aws.amazon.com/glue/latest/dg/orphan-file-deletion.html) di file orfani. Per le tabelle Amazon S3, consulta Manutenzione delle tabelle[.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html)