

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

# Considerazioni e restrizioni per le query CTAS
<a name="ctas-considerations-limitations"></a>

Le sezioni seguenti descrivono le considerazioni e le limitazioni da tenere a mente quando si utilizzano le query `CREATE TABLE AS SELECT` (CTAS) in Athena.

## Impara la sintassi delle query CTAS
<a name="ctas-considerations-limitations-query-syntax"></a>

La sintassi delle query CTAS differisce dalla sintassi di `CREATE [EXTERNAL] TABLE` utilizzato per la creazione di tabelle. Per informazioni, consulta [CREATE TABLE AS](create-table-as.md).

## La differenza tra visualizzazioni e query CTAS
<a name="ctas-considerations-limitations-queries-vs-views"></a>

Le query CTAS scrivono nuovi dati in una posizione specificata in Amazon S3. Le viste non scrivono alcun dato. 

## È possibile specificare il percorso per l’archiviazione dei risultati della query CTAS.
<a name="ctas-considerations-limitations-location-of-query-results"></a>

Se il gruppo di lavoro [sovrascrive l'impostazione lato client](workgroups-settings-override.md) per la posizione dei risultati della query, Athena crea la tabella nella posizione `s3://amzn-s3-demo-bucket/tables/{{<query-id>}}/`. Per visualizzare la posizione dei risultati della query specificata per il gruppo di lavoro, [visualizza i dettagli del gruppo di lavoro](viewing-details-workgroups.md).

Se il gruppo di lavoro non sovrascrive la posizione dei risultati della query, puoi utilizzare la sintassi `WITH (external_location ='s3://amzn-s3-demo-bucket/')` nella query CTAS per specificare dove sono memorizzati i risultati della query CTAS. 

**Nota**  
La proprietà `external_location` deve specificare una posizione vuota. Una query CTAS verifica che il percorso (prefisso) nel bucket sia vuoto e non sovrascrive mai i dati se il percorso dispone già di dati al suo interno. Per utilizzare nuovamente la stessa posizione, elimina i dati nella posizione del prefisso della chiave nel bucket.

Se ometti la sintassi `external_location` e non utilizzi l'impostazione del gruppo di lavoro, Athena usa l'[impostazione lato client](query-results-specify-location-console.md) per la posizione dei risultati della query e crea la tabella nella posizione `s3://amzn-s3-demo-bucket/{{<Unsaved-or-query-name>}}/{{<year>/<month/<date>}}/tables/{{<query-id>}}/`. 

## Individua i file orfani
<a name="ctas-considerations-limitations-locating-orphaned-files"></a>

Se un'istruzione `CTAS` o `INSERT INTO` non riesce, è possibile che i dati orfani vengano lasciati nel percorso dati target per query non riuscite o annullate. Poiché Athena in alcuni casi non elimina i dati dal bucket di destinazione per la tua query, i dati parziali potrebbero essere inclusi nelle query successive. 

Per individuare i file orfani per l'ispezione o l'eliminazione, è possibile utilizzare il file manifesto dati fornito da Athena per tenere traccia dell'elenco dei file da scrivere. In alcuni rari casi in cui una query Athena fallisce bruscamente, il file manifest potrebbe non essere presente. Puoi ispezionare manualmente la posizione S3 di destinazione per trovare i file orfani. Per ulteriori informazioni, consulta [Identificare i file di output delle query](querying-finding-output-files.md#querying-identifying-output-files) e. [DataManifestLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecutionStatistics.html#athena-Type-QueryExecutionStatistics-DataManifestLocation) 

Consigliamo vivamente di utilizzare Apache Iceberg per ottenere transazioni atomiche di tabelle. Per ulteriori informazioni, consulta [Tabelle Apache Iceberg](querying-iceberg.md).

## Ricorda che le clausole ORDER BY vengono ignorate
<a name="ctas-considerations-limitations-order-by-ignored"></a>

In una query CTAS, Athena ignora le clausole `ORDER BY` nella parte `SELECT` della query.

Secondo le specifiche SQL (ISO 9075, parte 2), l'ordine delle righe di una tabella specificata da un'espressione di query è garantito solo per l'espressione di query che contiene immediatamente la clausola `ORDER BY`. Le tabelle in SQL sono in ogni caso intrinsecamente non ordinate e l'implementazione delle clausole `ORDER BY` in sottoquery comporterebbe un rendimento scadente della query e non produrrebbe un output ordinato. Pertanto, nelle query Athena CTAS, non vi è alcuna garanzia che l'ordine specificato dalla clausola `ORDER BY` venga preservato al momento della scrittura dei dati.

## Scegli un formato per archiviare i risultati della query
<a name="ctas-considerations-limitations-formats-for-query-results"></a>

È possibile archiviare i risultati CTAS in `PARQUET`, `ORC`, `AVRO`, `JSON` e `TEXTFILE`. I delimitatori multi-carattere non sono supportati per il formato CTAS `TEXTFILE`. Se non specificate un formato di archiviazione dei dati, i risultati delle interrogazioni CTAS vengono memorizzati in Parquet per impostazione predefinita. 

Le interrogazioni CTAS non richiedono la specifica di a per interpretare le trasformazioni SerDe di formato. Per informazioni, consulta [Example: Writing query results to a different format](ctas-examples.md#ctas-example-format).

## Prendi in considerazione i formati di compressione
<a name="ctas-considerations-limitations-compression-formats"></a>

La compressione `GZIP` viene utilizzata per i risultati delle query CTAS nei formati JSON e TEXTFILE. Per Parquet, puoi usare `GZIP` o `SNAPPY` e il valore predefinito è `GZIP`. Per Parquet, puoi usare `LZ4`, `SNAPPY`, `ZLIB` o `ZSTD` e il valore predefinito è `ZLIB`. Per gli esempi CTAS che specificano la compressione, consulta [Example: Specifying data storage and compression formats](ctas-examples.md#ctas-example-compression). Per ulteriori informazioni sulla compressione in Athena, consulta [Usa la compressione in Athena](compression-formats.md).

## Suddividere e inserire i risultati in bucket
<a name="ctas-considerations-limitations-partition-and-bucket-limits"></a>

È possibile partizionare ed eseguire il bucket dei dati dei risultati di una query CTAS. Per specificare le proprietà della tabella di destinazione, includi i predicati di partizionamento e bucketing alla fine della clausola. `WITH` Per ulteriori informazioni, consultare [Utilizzare partizionamento e bucketing](ctas-partitioning-and-bucketing.md) e [Example: Creating bucketed and partitioned tables](ctas-examples.md#ctas-example-bucketed).

Quando si utilizza CTAS per creare una tabella partizionata, Athena ha un limite di scrittura di 100 partizioni. Per informazioni su una soluzione alternativa per la limitazione di 100 partizioni, consulta [Utilizzare CTAS e INSERT INTO per aggirare il limite di 100 partizioni](ctas-insert-into.md).

## Crittografa i tuoi risultati
<a name="ctas-considerations-limitations-encryption"></a>

È possibile crittografare i risultati delle query CTAS in Amazon S3, analogamente al modo di crittografare gli altri risultati della query in Athena. Per ulteriori informazioni, consulta [Crittografare i risultati di query Athena archiviati in Amazon S3](encrypting-query-results-stored-in-s3.md).

## L’impostazione prevista del proprietario del bucket non si applica a CTAS
<a name="ctas-considerations-limitations-expected-bucket-owner"></a>

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

## I tipi di dati delle colonne vengono conservati
<a name="ctas-considerations-limitations-data-types"></a>

I tipi di dati di colonna per una query CTAS sono gli stessi specificati per la query originale.