Considerazioni e restrizioni per le query CTAS - Amazon Athena

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

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.

Sintassi delle query CTAS

La sintassi delle query CTAS differisce dalla sintassi di CREATE [EXTERNAL] TABLE utilizzato per la creazione di tabelle. Per informazioni, consulta CREATE TABLE AS.

Query CTAS e visualizzazioni

Le query CTAS scrivono nuovi dati per un percorso specifico in Amazon S3, mentre le visualizzazioni non scrivono alcun dato.

Percorso delle query CTAS

Se il gruppo di lavoro sovrascrive l'impostazione lato client per la posizione dei risultati della query, Athena crea la tabella nella posizione s3://DOC-EXAMPLE-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.

Se il gruppo di lavoro non sovrascrive la posizione dei risultati della query, puoi utilizzare la sintassi WITH (external_location ='s3://DOC-EXAMPLE-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 per la posizione dei risultati della query e crea la tabella nella posizione s3://DOC-EXAMPLE-BUCKET/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/.

Individuazione di file orfani

Se un'istruzione CTAS o INSERT INTO non riesce, è possibile che i dati orfani vengano lasciati nel percorso dati. Poiché Athena in alcuni casi non elimina alcun dato (anche parziale) dal bucket, potresti essere in grado di leggere questi dati parziali 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. Per ulteriori informazioni, consulta Identificazione dei file di output delle query e DataManifestLocation.

Clausola ORDER BY ignorata

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.

Formati per l'archiviazione dei risultati della query

I risultati della query CTAS sono archiviati in Parquet per impostazione predefinita, se non si specifica un formato di storage dei dati. È possibile archiviare i risultati CTAS in PARQUET, ORC, AVRO, JSON e TEXTFILE. I delimitatori multi-carattere non sono supportati per il formato CTAS TEXTFILE. Le interrogazioni CTAS non richiedono la specifica di SerDe a per interpretare le trasformazioni di formato. Per informazioni, consulta Example: Writing query results to a different format.

Formati di compressione

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. Per ulteriori informazioni sulla compressione in Athena, consulta Supporto della compressione in Athena.

Limiti di partizione e di bucket

È possibile partizionare ed eseguire il bucket dei dati dei risultati di una query CTAS. Per ulteriori informazioni, consulta Partizionamento e arrotolamento in Athena. Quando si crea una tabella partizionata utilizzando CTAS, Athena ha un limite di scrittura di 100 partizioni.

Includi i predicati di partizionamento e di bucketing alla fine della clausola WITH che specifica le proprietà della tabella di destinazione. Per ulteriori informazioni, consulta Example: Creating bucketed and partitioned tables e Partizionamento e arrotolamento in Athena.

Per informazioni su una soluzione alternativa per la limitazione di 100 partizioni, consulta Utilizzo di CTAS e INSERT INTO per aggirare il limite di 100 partizioni.

Crittografia

È 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 Crittografia dei risultati di query Athena archiviati in Amazon S3.

Proprietario previsto del bucket

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.

Tipi di dati

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