

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à.

# CREATE TABLE AS
<a name="create-table-as"></a>

Crea una nuova tabella popolata con i risultati di una query [SELECT](select.md). Per creare una tabella vuota, utilizza [CREATE TABLE](create-table.md). `CREATE TABLE AS` combina una dichiarazione DDL `CREATE TABLE` con una dichiarazione DML `SELECT`, quindi tecnicamente contiene sia DDL sia DML. Tieni presente che, sebbene `CREATE TABLE AS` siano raggruppate qui con altre dichiarazioni DDL, le query CTAS in Athena vengono trattate come DML ai fini delle Service Quotas. Per informazioni sulle Service Quotas in Athena, consulta [Service Quotas](service-limits.md).

**Nota**  
Per le istruzioni CTAS, l'impostazione prevista per il proprietario del bucket non si applica alla posizione della tabella di destinazione in Amazon S3. L'impostazione prevista per il proprietario del bucket si applica solo al percorso di output di Amazon S3 specificato per i risultati delle query di Athena. Per ulteriori informazioni, consulta [Specificare una posizione dei risultati delle query utilizzando la console Athena](query-results-specify-location-console.md).

Per ulteriori informazioni su `CREATE TABLE AS` oltre all'ambito di questo argomento di riferimento, consulta [Creare una tabella dai risultati delle query (CTAS)](ctas.md).

**Topics**
+ [Riepilogo](#synopsis)
+ [Proprietà tabella CTAS](#ctas-table-properties)
+ [Esempi](#ctas-table-examples)

## Riepilogo
<a name="synopsis"></a>

```
CREATE TABLE table_name
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]
```

Dove:

**WITH ( property\_name = expression[, ...] )**  
Un elenco di proprietà tabella CTAS facoltative, alcune delle quali sono specifiche per il formato di storage dei dati. Per informazioni, consulta [Proprietà tabella CTAS](#ctas-table-properties).

**query**  
Query [SELECT](select.md) utilizzata per creare una nuova tabella.  
Se prevedi di creare una query con partizioni, specifica i nomi delle colonne partizionate nelle ultime voci dell'elenco delle colonne nella dichiarazione `SELECT`.

**[ WITH [ NO ] DATA ]**  
Se si utilizza `WITH NO DATA`, viene creata una nuova tabella vuota con lo stesso schema della tabella originale.

**Nota**  
Per includere le intestazioni di colonna nell'output dei risultati della query, è possibile utilizzare una semplice query `SELECT` anziché una query CTAS. È possibile recuperare i risultati dalla posizione dei risultati della query o scaricarli direttamente utilizzando la console Athena. Per ulteriori informazioni, consulta [Lavora con i risultati delle query e le query recenti](querying.md). 

## Proprietà tabella CTAS
<a name="ctas-table-properties"></a>

Ogni tabella CTAS in Athena dispone di un elenco di proprietà tabella CTAS opzionali specificate dall'utente utilizzando `WITH (property_name = expression [, ...] )`. Per ulteriori informazioni sull'uso di questi parametri, consulta [Esempi di query CTAS](ctas-examples.md).

** `WITH (property_name = expression [, ...], )` **    
 `table_type = ['HIVE', 'ICEBERG']`   
Opzionale. Il valore predefinito è `HIVE`. Specifica il tipo di tabella della tabella risultante  
Esempio:  

```
WITH (table_type ='ICEBERG')
```  
 `external_location = [location]`   
Poiché le tabelle Iceberg non sono esterne, questa proprietà non si applica ad esse. Per definire la posizione principale di una tabella Iceberg in un'istruzione CTAS, utilizza la proprietà `location` descritta più avanti in questa sezione.
Opzionale. La posizione nella quale Athena salva la query CTAS in Amazon S3.  
Esempio:  

```
 WITH (external_location ='s3://amzn-s3-demo-bucket/tables/parquet_table/')
```
Athena non utilizza due volte lo stesso percorso per i risultati della query. Se si specifica il percorso manualmente, verificare che il percorso Amazon S3 non contenga dei dati. Athena non tenta mai di cancellare i tuoi dati. Se si desidera utilizzare di nuovo la stessa posizione, occorre eliminare manualmente i dati, altrimenti la query CTAS fallirà.  
Se si esegue una query CTAS che specifica una posizione `external_location` in un gruppo di lavoro che [applica una posizione dei risultati della query](workgroups-settings-override.md), la query non riesce e viene mostrato un messaggio di errore. Per visualizzare la posizione dei risultati della query specificata per il gruppo di lavoro, [vedere i dettagli del gruppo di lavoro](viewing-details-workgroups.md).  
Se il gruppo di lavoro sostituisce l'impostazione lato client per la posizione dei risultati della query, Athena crea la tabella nel percorso seguente:  

```
s3://amzn-s3-demo-bucket/tables/{{query-id}}/
```
Se non si utilizza la proprietà `external_location` per specificare una posizione e il gruppo di lavoro non sostituisce le impostazioni lato client, Athena utilizza l'[impostazione lato client](query-results-specify-location-console.md) per la posizione dei risultati della query per creare la tabella nel percorso seguente:  

```
s3://amzn-s3-demo-bucket/{{Unsaved-or-query-name}}/{{year}}/{{month}}/{{date}}/tables/{{query-id}}/
```  
 `is_external = [boolean]`   
Opzionale. Indica se la tabella è una tabella esterna. Il valore predefinito è true. Per le tabelle Iceberg, questo valore deve essere impostato su false.  
Esempio:  

```
WITH (is_external = false)
```  
 `location = [location]`   
Obbligatorio per le tabelle Iceberg. Specifica la posizione principale della tabella Iceberg da creare partendo dai risultati della query.  
Esempio:  

```
WITH (location ='s3://amzn-s3-demo-bucket/tables/{{iceberg_table}}/')
```  
 `field_delimiter = [delimiter]`   
Facoltativo e specifiche per formati di storage dei dati basati su testo. Il separatore di campo a carattere singolo per file in CSV, TSV e file di testo. Ad esempio, `WITH (field_delimiter = ',')`. Attualmente, i delimitatori di campo multicanale non sono supportati per le query CTAS. Se non si specifica un delimitatore, per impostazione predefinita viene utilizzato `\001`.  
 `format = [storage_format]`   
Il formato di archiviazione per i risultati delle query CTAS, ad esempio `ORC`, `PARQUET`, `AVRO`, `JSON`, `ION` o `TEXTFILE`. Per le tabelle Iceberg, i formati consentiti sono `ORC`, `PARQUET` e `AVRO`. Se omesso, per impostazione predefinita viene utilizzato `PARQUET`. Il nome di questo parametro `format` deve essere elencato in lettere minuscole, altrimenti la query CTAS fallirà.   
Esempio:  

```
WITH (format = 'PARQUET')
```  
 `bucketed_by = ARRAY[ column_name[,…], bucket_count = [int] ]`   
Questa proprietà non è valida per le tabelle Iceberg. Per le tabelle Iceberg, utilizza il partizionamento con trasformazione del bucket.
Elenco matrice di bucket per periodizzare i dati. Se omesso, Athena non salva tuoi dati nel bucket in questa query.  
 `bucket_count = [int]`   
Questa proprietà non è valida per le tabelle Iceberg. Per le tabelle Iceberg, utilizza il partizionamento con trasformazione del bucket.
Il numero di bucket per la periodizzazione dei dati. Se omesso, Athena non conserva i dati nel bucket. Esempio:  

```
CREATE TABLE bucketed_table WITH (
  bucketed_by = ARRAY[{{column_name}}], 
  bucket_count = 30, format = 'PARQUET', 
  external_location ='s3://amzn-s3-demo-bucket/tables/parquet_table/'
) AS 
SELECT 
  * 
FROM 
  {{table_name}}
```  
 `partitioned_by = ARRAY[ col_name[,…] ]`   
Questa proprietà non è valida per le tabelle Iceberg. Per utilizzare le trasformazioni delle partizioni per le tabelle Iceberg, utilizza la proprietà `partitioning` descritta più avanti in questa sezione.
Opzionale. Un elenco matrice di colonne in base al quale sarà partizionata la tabella CTAS. Verificare che i nomi delle colonne partizionate siano elencate per ultimi nell'elenco delle colonne della dichiarazione `SELECT`.   
 `partitioning = ARRAY[partition_transform, ...]`   
Opzionale. Specifica il partizionamento della tabella Iceberg da creare. Iceberg supporta un'ampia varietà di trasformazioni ed evoluzione delle partizioni. La tabella seguente riepiloga le trasformazioni delle partizioni.    
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/athena/latest/ug/create-table-as.html)
Esempio:  

```
 WITH (partitioning = ARRAY['month(order_date)', 
                            'bucket(account_number, 10)', 
                            'country']))
```  
 `optimize_rewrite_min_data_file_size_bytes = [long]`   
Opzionale. Configurazione specifica dell'ottimizzazione dei dati I file più piccoli del valore specificato sono inclusi per la compattazione. Il valore predefinito è 0,75 volte il valore di `write_target_data_file_size_bytes`. Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [Ottimizzare le tabelle Iceberg](querying-iceberg-data-optimization.md).  
Esempio:  

```
WITH (optimize_rewrite_min_data_file_size_bytes = 402653184)
```  
 `optimize_rewrite_max_data_file_size_bytes = [long]`   
Opzionale. Configurazione specifica dell'ottimizzazione dei dati I file più grandi del valore specificato sono inclusi per la compattazione. Il valore predefinito è 1,8 volte il valore di `write_target_data_file_size_bytes`. Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [Ottimizzare le tabelle Iceberg](querying-iceberg-data-optimization.md).  
Esempio:  

```
WITH (optimize_rewrite_max_data_file_size_bytes = 966367641)
```  
 `optimize_rewrite_data_file_threshold = [int]`   
Opzionale. Configurazione specifica dell'ottimizzazione dei dati Se ci sono meno file di dati che richiedono un'ottimizzazione rispetto alla soglia specificata, i file non vengono riscritti. Ciò consente l'accumulo di più file di dati per produrre file più vicini alle dimensioni di destinazione e saltare i calcoli non necessari per risparmiare sui costi. Il predefinito è 5. Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [Ottimizzare le tabelle Iceberg](querying-iceberg-data-optimization.md).  
Esempio:  

```
WITH (optimize_rewrite_data_file_threshold = 5)
```  
 `optimize_rewrite_delete_file_threshold = [int]`   
Opzionale. Configurazione specifica dell'ottimizzazione dei dati Se a un file di dati sono associati meno file di eliminazione rispetto alla soglia, il file di dati non viene riscritto. Ciò consente l'accumulo di più file di eliminazione per ogni file di dati per risparmiare sui costi. Il valore predefinito è 2. Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [Ottimizzare le tabelle Iceberg](querying-iceberg-data-optimization.md).  
Esempio:  

```
WITH (optimize_rewrite_delete_file_threshold = 2)
```  
 `vacuum_min_snapshots_to_keep = [int]`   
Opzionale. Configurazione specifica per il vacuum. Il numero minimo di snapshot più recenti da mantenere. Il valore di default è 1. Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [VACUUM](vacuum-statement.md).  
La proprietà `vacuum_min_snapshots_to_keep` richiede la versione 3 del motore Athena. 
Esempio:  

```
WITH (vacuum_min_snapshots_to_keep = 1)
```  
 `vacuum_max_snapshot_age_seconds = [long]`   
Opzionale. Configurazione specifica per il vacuum. Un periodo in secondi che rappresenta l'età degli snapshot da mantenere. Il valore predefinito è 432.000 (5 giorni). Questa proprietà si applica solo alle tabelle Iceberg. Per ulteriori informazioni, consulta [VACUUM](vacuum-statement.md).  
La proprietà `vacuum_max_snapshot_age_seconds` richiede la versione 3 del motore Athena. 
Esempio:  

```
WITH (vacuum_max_snapshot_age_seconds = 432000)
```  
 `write_compression = [compression_format]`   
Il tipo di compressione da utilizzare per qualsiasi formato di archiviazione che consente di specificare la compressione. Il valore `compression_format` specifica la compressione da utilizzare quando i dati vengono scritti nella tabella. È possibile specificare la compressione per i formati file `TEXTFILE`, `JSON`, `PARQUET` e `ORC`.   
Ad esempio, se la proprietà `format` specifica `PARQUET` come formato di archiviazione, il valore per `write_compression` specifica il formato di compressione per Parquet. In questo caso, specificare un valore per `write_compression` equivale a specificare un valore per `parquet_compression`.   
Analogamente, se la proprietà `format` specifica `ORC` come formato di archiviazione, il valore per `write_compression` specifica il formato di compressione per ORC. In questo caso, specificare un valore per `write_compression` equivale a specificare un valore per `orc_compression`.   
Non è possibile specificare più proprietà della tabella dei formati di compressione nella stessa query CTAS. Ad esempio, non è possibile specificare sia `write_compression` che `parquet_compression` nella stessa query. Lo stesso vale per `write_compression` e `orc_compression`. Per informazioni sui tipi di compressione supportati per ciascun formato di file, consultare [Usa la compressione in Athena](compression-formats.md).  
 `orc_compression = [compression_format]`   
Il tipo di compressione da utilizzare per il formato di file `ORC` quando i dati `ORC` vengono scritti nella tabella. Ad esempio, `WITH (orc_compression = 'ZLIB')`. I blocchi all'interno del file `ORC` (eccetto il Postscript `ORC`) vengono compressi utilizzando la compressione specificata. Se omesso, per impostazione predefinita per `ORC` viene utilizzata la compressione ZLIB.  
Si consiglia invece di utilizzare la proprietà `write_compression` al posto di `orc_compression`. Utilizzare la proprietà `format` per specificare il formato di archiviazione come `ORC`, quindi utilizzare la proprietà `write_compression` per specificare il formato di compressione che sarà utilizzato da `ORC`.   
 `parquet_compression = [compression_format]`   
Il tipo di compressione da utilizzare per il formato di file Parquet quando i dati Parquet vengono scritti nella tabella. Ad esempio, `WITH (parquet_compression = 'SNAPPY')`. Questa compressione viene applicata ai blocchi di colonna all'interno dei file Parquet. Se omesso, per impostazione predefinita per Parquet viene utilizzata la compressione GZIP.  
Si consiglia invece di utilizzare la proprietà `write_compression` al posto di `parquet_compression`. Utilizzare la proprietà `format` per specificare il formato di archiviazione come `PARQUET`, quindi utilizzare la proprietà `write_compression` per specificare il formato di compressione che sarà utilizzato da `PARQUET`.   
 `compression_level = [compression_level]`   
Il livello di compressione da utilizzare. Questa proprietà si applica solo alla compressione ZSTD. I valori possibili sono compresi tra 1 e 22. Il valore predefinito è 3. Per ulteriori informazioni, consulta [Usa i livelli di compressione ZSTD](compression-support-zstd-levels.md).

## Esempi
<a name="ctas-table-examples"></a>

Per esempi di query CTAS, consultare le risorse seguenti.
+  [Esempi di query CTAS](ctas-examples.md) 
+  [Utilizzare CTAS e INSERT INTO per ETL e analisi dei dati](ctas-insert-into-etl.md) 
+  [Uso di istruzioni CTAS con Amazon Athena per ridurre i costi e migliorare le prestazioni](https://aws.amazon.com/blogs/big-data/using-ctas-statements-with-amazon-athena-to-reduce-cost-and-improve-performance/) 
+  [Utilizzare CTAS e INSERT INTO per aggirare il limite di 100 partizioni](ctas-insert-into.md) 