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à.
Crea una nuova tabella popolata con i risultati di una query SELECT. Per creare una tabella vuota, usaCREATE TABLE. CREATE TABLE AS
combina un'CREATE TABLE
DDListruzione con un'SELECT
DMListruzione e quindi tecnicamente contiene sia DDL eDML. Si noti che, sebbene siano CREATE TABLE
AS
raggruppate qui con altre DDL istruzioni, le CTAS interrogazioni in Athena vengono trattate come ai fini del Service DML Quotas. Per informazioni sulle Service Quotas in Athena, consulta Service Quotas (Quote di Servizio).
Nota
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.
Per ulteriori informazioni su CREATE TABLE AS
oltre all'ambito di questo argomento di riferimento, consulta Crea una tabella dai risultati della query (CTAS).
Riepilogo
CREATE TABLE table_name
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]
Dove:
- WITH(property_name = espressione [,...])
-
Un elenco di proprietà opzionali della CTAS tabella, alcune delle quali sono specifiche del formato di archiviazione dei dati. Per informazioni, consulta CTASproprietà della tabella.
- query
-
Query SELECT utilizzata per creare una nuova tabella.
Importante
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 SELECT
query anziché una CTAS query. È possibile recuperare i risultati dalla posizione dei risultati della query o scaricarli direttamente utilizzando la console Athena. Per ulteriori informazioni, consulta Utilizzare i risultati delle query e le query recenti.
CTASproprietà della tabella
Ogni CTAS tabella in Athena ha un elenco di proprietà di CTAS tabella opzionali che è possibile specificare utilizzando. WITH (property_name = expression [, ...] )
Per ulteriori informazioni sull'uso di questi parametri, consulta Esempi di CTAS domande.
-
WITH (property_name = expression [, ...], )
-
-
table_type = ['HIVE', 'ICEBERG']
-
Facoltativo. Il valore predefinito è
HIVE
. Specifica il tipo di tabella della tabella risultanteEsempio:
WITH (table_type ='ICEBERG')
-
external_location = [location]
-
Nota
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'CTASistruzione, utilizzate la
location
proprietà descritta più avanti in questa sezione.Facoltativo. La posizione in cui Athena salva la tua CTAS query 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 desideri utilizzare nuovamente la stessa posizione, elimina manualmente i dati o la CTAS query avrà esito negativo.
Se si esegue una CTAS query che specifica una posizione
external_location
in un gruppo di lavoro che impone una posizione dei risultati della query, la query ha esito negativo e viene visualizzato 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.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 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]
-
Facoltativo. 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 delimitatore di campo a carattere singolo per i file inCSV, e i file di testo. TSV Ad esempio
WITH (field_delimiter = ',')
. Attualmente, i delimitatori di campo con più caratteri non sono supportati per le interrogazioni. CTAS Se non si specifica un delimitatore, per impostazione predefinita viene utilizzato\001
. -
format = [storage_format]
-
Il formato di archiviazione per i risultati della CTAS query, ad esempio,,,
ORC
,PARQUET
o.AVRO
JSON
ION
TEXTFILE
Per le tabelle Iceberg, i formati consentiti sonoORC
,PARQUET
eAVRO
. Se omesso, per impostazione predefinita viene utilizzatoPARQUET
. Il nome di questo parametroformat
, deve essere elencato in lettere minuscole, altrimenti la CTAS query avrà esito negativo.Esempio:
WITH (format = 'PARQUET')
-
bucketed_by = ARRAY[ column_name[,…], bucket_count = [int] ]
-
Nota
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]
-
Nota
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 * FROMtable_name
-
partitioned_by = ARRAY[ col_name[,…] ]
-
Nota
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.Facoltativo. Un elenco di matrici di colonne in base al quale la CTAS tabella verrà partizionata. Verificare che i nomi delle colonne partizionate siano elencate per ultimi nell'elenco delle colonne della dichiarazione
SELECT
. -
partitioning = ARRAY[partition_transform, ...]
-
Facoltativo. 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.
Trasformazione Descrizione year(ts)
Crea una partizione per ogni anno. Il valore della partizione è la differenza espressa con numero intero degli anni compresi tra ts
e il 1° gennaio 1970.month(ts)
Crea una partizione per ogni mese di ogni anno. Il valore della partizione è la differenza espressa con numero intero dei mesi compresi tra ts
e il 1° gennaio 1970.day(ts)
Crea una partizione per ogni giorno di ogni anno. Il valore della partizione è la differenza espressa con numero intero dei giorni compresi tra ts
e il 1° gennaio 1970.hour(ts)
Crea una partizione per ogni ora di ogni giorno. Il valore della partizione è un timestamp con i minuti e i secondi impostati su zero. bucket(x, nbuckets)
Esegue l'hashing dei dati nel numero di bucket specificato. Il valore della partizione è un hash intero di x
, con un valore compreso tra 0 enbuckets - 1
inclusi.truncate(s, nchars)
Imposta il valore della partizione come primi nchars
caratteri dis
.Esempio:
WITH (partitioning = ARRAY['month(order_date)', 'bucket(account_number, 10)', 'country']))
-
optimize_rewrite_min_data_file_size_bytes = [long]
-
Facoltativo. 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 Ottimizza le tabelle Iceberg.Esempio:
WITH (optimize_rewrite_min_data_file_size_bytes = 402653184)
-
optimize_rewrite_max_data_file_size_bytes = [long]
-
Facoltativo. 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 Ottimizza le tabelle Iceberg.Esempio:
WITH (optimize_rewrite_max_data_file_size_bytes = 966367641)
-
optimize_rewrite_data_file_threshold = [int]
-
Facoltativo. 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 Ottimizza le tabelle Iceberg.
Esempio:
WITH (optimize_rewrite_data_file_threshold = 5)
-
optimize_rewrite_delete_file_threshold = [int]
-
Facoltativo. 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 Ottimizza le tabelle Iceberg.
Esempio:
WITH (optimize_rewrite_delete_file_threshold = 2)
-
vacuum_min_snapshots_to_keep = [int]
-
Facoltativo. 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.
Nota
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]
-
Facoltativo. 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.
Nota
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 fileTEXTFILE
,JSON
,PARQUET
eORC
.Ad esempio, se la proprietà
format
specificaPARQUET
come formato di archiviazione, il valore perwrite_compression
specifica il formato di compressione per Parquet. In questo caso, specificare un valore perwrite_compression
equivale a specificare un valore perparquet_compression
.Analogamente, se la
format
proprietà specificaORC
come formato di archiviazione, il valore diwrite_compression
specifica il formato di compressione per. ORC In questo caso, specificare un valore perwrite_compression
equivale a specificare un valore perorc_compression
.Non è possibile specificare più proprietà della tabella del formato di compressione nella stessa CTAS query. Ad esempio, non è possibile specificare sia
write_compression
cheparquet_compression
nella stessa query. Lo stesso vale perwrite_compression
eorc_compression
. Per informazioni sui tipi di compressione supportati per ciascun formato di file, consultare Usa la compressione in Athena. -
orc_compression = [compression_format]
-
Il tipo di compressione da utilizzare per il formato di file
ORC
quando i datiORC
vengono scritti nella tabella. Ad esempioWITH (orc_compression = 'ZLIB')
. I blocchi all'interno del fileORC
(eccetto il PostscriptORC
) vengono compressi utilizzando la compressione specificata. Se omesso, per impostazione predefinita viene utilizzata ZLIB la compressione perORC
.Nota
Si consiglia invece di utilizzare la proprietà
write_compression
al posto diorc_compression
. Utilizzare la proprietàformat
per specificare il formato di archiviazione comeORC
, quindi utilizzare la proprietàwrite_compression
per specificare il formato di compressione che sarà utilizzato daORC
. -
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, GZIP la compressione viene utilizzata di default per Parquet.Nota
Si consiglia invece di utilizzare la proprietà
write_compression
al posto diparquet_compression
. Utilizzare la proprietàformat
per specificare il formato di archiviazione comePARQUET
, quindi utilizzare la proprietàwrite_compression
per specificare il formato di compressione che sarà utilizzato daPARQUET
. -
compression_level = [compression_level]
-
Il livello di compressione da utilizzare. Questa proprietà si applica solo alla ZSTD compressione. I valori possibili sono compresi tra 1 e 22. Il valore predefinito è 3. Per ulteriori informazioni, consulta Usa i livelli di ZSTD compressione.
-
Esempi
Per esempi di CTAS interrogazioni, consulta le seguenti risorse.