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 limitazioni per CTAS le interrogazioni
Le sezioni seguenti descrivono considerazioni e limitazioni da tenere a mente quando si utilizzano le query CREATE TABLE AS SELECT
(CTAS) in Athena.
Impara la sintassi delle query CTAS
La sintassi della CTAS query è diversa dalla sintassi CREATE [EXTERNAL] TABLE
utilizzata per la creazione di tabelle. Per informazioni, consulta CREATE TABLE AS.
La differenza tra visualizzazioni e interrogazioni CTAS
CTASle query scrivono nuovi dati in una posizione specificata in Amazon S3. Le viste non scrivono alcun dato.
Specificate una posizione per i risultati della CTAS query
Se il gruppo di lavoro sovrascrive l'impostazione lato client per la posizione dei risultati della query, Athena crea la tabella nella posizione s3://amzn-s3-demo-bucket/tables/
. Per visualizzare la posizione dei risultati della query specificata per il gruppo di lavoro, visualizza i dettagli del gruppo di lavoro.<query-id>
/
Se il gruppo di lavoro non sovrascrive la posizione dei risultati della query, è possibile utilizzare la sintassi WITH (external_location ='s3://amzn-s3-demo-bucket/')
della CTAS query per specificare dove vengono archiviati i risultati della CTAS query.
Nota
La proprietà external_location
deve specificare una posizione vuota. Una CTAS query verifica che la posizione del percorso (prefisso) nel bucket sia vuota e non sovrascrive mai i dati se la posizione contiene già dati. 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://amzn-s3-demo-bucket/
. <Unsaved-or-query-name>
/<year>/<month/<date>
/tables/<query-id>
/
Individua i 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, vedere Identifica i file di output delle query e DataManifestLocation.
Ricorda che le clausole ORDER BY vengono ignorate
In una CTAS query, Athena ignora le ORDER BY
clausole nella parte della SELECT
query.
Secondo le SQL specifiche (ISO9075, 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 ogni caso SQL sono intrinsecamente disordinate e l'implementazione delle clausole ORDER BY
in sub query comporterebbe un rendimento scadente della query e non produrrebbe un output ordinato. Pertanto, nelle CTAS interrogazioni di Athena, non vi è alcuna garanzia che l'ordine specificato dalla ORDER
BY
clausola venga preservato al momento della scrittura dei dati.
Scegliete un formato per memorizzare i risultati della ricerca
È possibile archiviare CTAS i risultati in PARQUET
ORC
,AVRO
,JSON
, eTEXTFILE
. I delimitatori a più caratteri non sono supportati per il formato. CTAS TEXTFILE
Se non si specifica un formato di archiviazione dei dati, i risultati delle CTAS query vengono memorizzati in Parquet per impostazione predefinita.
CTASle interrogazioni non richiedono la specificazione di SerDe a per interpretare le trasformazioni di formato. Per informazioni, consulta Example: Writing query results to a different format.
Prendi in considerazione i formati di compressione
GZIP
la compressione viene utilizzata per i risultati delle CTAS query in JSON e TEXTFILE formati. Per Parquet, puoi usare GZIP
o SNAPPY
e il valore predefinito è GZIP
. PerchéORC, puoi usareLZ4
, SNAPPY
ZLIB
ZSTD
, o e l'impostazione predefinita èZLIB
. Per CTAS esempi che specificano la compressione, vedereExample: Specifying data storage and compression formats. Per ulteriori informazioni sulla compressione in Athena, consulta Usa la compressione in Athena.
Suddividi i risultati in un bucket e suddividi in un bucket
È possibile partizionare e raggruppare i 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, consulta Usa il partizionamento e il bucketing e Example: Creating bucketed and partitioned tables.
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 aggirare il limite di 100 partizioni.
Crittografa i tuoi risultati
È possibile crittografare i risultati delle CTAS query in Amazon S3, in modo analogo a come si crittografano altri risultati di query in Athena. Per ulteriori informazioni, consulta Crittografa i risultati delle query Athena archiviati in Amazon S3.
L'impostazione prevista per il proprietario del bucket non si applica a CTAS
Per quanto riguarda CTAS le dichiarazioni, l'impostazione del proprietario del bucket previsto non si applica alla posizione della tabella di destinazione in Amazon S3. L'impostazione attesa relativa al 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 la posizione dei risultati della query utilizzando la console Athena.
I tipi di dati delle colonne vengono conservati
I tipi di dati delle colonne per una CTAS query sono gli stessi specificati per la query originale.