Esempi di CTAS domande - 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à.

Esempi di CTAS domande

Usa i seguenti esempi per creare CTAS interrogazioni. Per informazioni sulla CTAS sintassi, vedere. CREATE TABLE AS

In questa sezione:

Esempio: duplicazione di una tabella selezionando tutte le colonne

L'esempio seguente crea una tabella copiando tutte le colonne di una tabella:

CREATE TABLE new_table AS SELECT * FROM old_table;

Nella seguente variazione dello stesso esempio, l'istruzione SELECT comprende anche una clausola WHERE. In questo caso, la query seleziona solo le righe dalla tabella che soddisfano la clausola WHERE:

CREATE TABLE new_table AS SELECT * FROM old_table WHERE condition;
Esempio: selezione di colonne specifiche da una o più tabelle

L'esempio seguente crea una nuova query che viene eseguita su un set di colonne da un'altra tabella:

CREATE TABLE new_table AS SELECT column_1, column_2, ... column_n FROM old_table;

Questa variazione dello stesso esempio crea una nuova tabella in base a colonne specifiche di più tabelle:

CREATE TABLE new_table AS SELECT column_1, column_2, ... column_n FROM old_table_1, old_table_2, ... old_table_n;
Esempio: creazione di una copia vuota di una tabella esistente

L'esempio seguente utilizza WITH NO DATA per creare una nuova tabella vuota e ha lo stesso schema della tabella originale:

CREATE TABLE new_table AS SELECT * FROM old_table WITH NO DATA;
Esempio: specifica dei formati di compressione e dell'archiviazione dei dati

ConCTAS, è possibile utilizzare una tabella di origine in un formato di archiviazione per creare un'altra tabella in un formato di archiviazione diverso.

Utilizza la proprietà format per specificare ORC, PARQUET, AVRO, JSON oppure TEXTFILE come formato di archiviazione per la nuova tabella.

Per i formati di archiviazione PARQUET, ORC, TEXTFILE e JSON, utilizzare la proprietà write_compression per specificare il formato di compressione per i dati della nuova tabella. Per informazioni sui formati di compressione supportati da ciascun formato di file, consultare Usa la compressione in Athena.

L'esempio seguente specifica che i dati nella tabella new_table devono essere archiviati in formato Parquet e devono utilizzare la compressione Snappy. La compressione di default per Parquet è GZIP.

CREATE TABLE new_table WITH ( format = 'Parquet', write_compression = 'SNAPPY') AS SELECT * FROM old_table;

L'esempio seguente specifica che i dati della tabella new_table devono essere archiviati in un ORC formato utilizzando la compressione Snappy. La compressione predefinita per è. ORC ZLIB

CREATE TABLE new_table WITH (format = 'ORC', write_compression = 'SNAPPY') AS SELECT * FROM old_table ;

L'esempio seguente specifica che i dati nella tabella new_table devono essere archiviati in formato file di testo tramite la compressione Snappy. La compressione predefinita sia per il file di testo che per i JSON formati èGZIP.

CREATE TABLE new_table WITH (format = 'TEXTFILE', write_compression = 'SNAPPY') AS SELECT * FROM old_table ;
Esempio: scrittura dei risultati della query in un formato diverso

La seguente CTAS query seleziona tutti i record da old_table cui possono essere archiviati in CSV o in un altro formato e crea una nuova tabella con i dati sottostanti salvati in Amazon S3 ORC in formato:

CREATE TABLE my_orc_ctas_table WITH ( external_location = 's3://amzn-s3-demo-bucket/my_orc_stas_table/', format = 'ORC') AS SELECT * FROM old_table;
Esempio: creazione di tabelle non partizionate

I seguenti esempi creano tabelle non partizionate. I dati della tabella vengono memorizzati in diversi formati. Alcuni di questi esempi specificano il percorso esterno.

L'esempio seguente crea una CTAS query che memorizza i risultati come file di testo:

CREATE TABLE ctas_csv_unpartitioned WITH ( format = 'TEXTFILE', external_location = 's3://amzn-s3-demo-bucket/ctas_csv_unpartitioned/') AS SELECT key1, name1, address1, comment1 FROM table1;

Nel seguente esempio, i risultati vengono archiviati in Parquet e viene utilizzato il percorso dei risultati predefiniti.

CREATE TABLE ctas_parquet_unpartitioned WITH (format = 'PARQUET') AS SELECT key1, name1, comment1 FROM table1;

Nella seguente query, la tabella viene memorizzata in JSON e vengono selezionate colonne specifiche dai risultati della tabella originale:

CREATE TABLE ctas_json_unpartitioned WITH ( format = 'JSON', external_location = 's3://amzn-s3-demo-bucket/ctas_json_unpartitioned/') AS SELECT key1, name1, address1, comment1 FROM table1;

Nell'esempio seguente, il formato èORC:

CREATE TABLE ctas_orc_unpartitioned WITH ( format = 'ORC') AS SELECT key1, name1, comment1 FROM table1;

Nell'esempio seguente, il formato è Avro:

CREATE TABLE ctas_avro_unpartitioned WITH ( format = 'AVRO', external_location = 's3://amzn-s3-demo-bucket/ctas_avro_unpartitioned/') AS SELECT key1, name1, comment1 FROM table1;
Esempio: creazione di tabelle partizionate

I seguenti esempi mostrano le query CREATE TABLE AS SELECT per tabelle partizionate in diversi formati di storage, che utilizzano partitioned_by e altre proprietà nella clausola WITH. Per la sintassi, consulta CTASproprietà della tabella. Per ulteriori informazioni sulla scelta delle colonne per il partizionamento, consulta Usa il partizionamento e il bucketing.

Nota

Elencare le colonne di partizione alla fine dell'elenco di colonne nell'istruzione SELECT. È possibile partizionare per più di una colonna e ottenere fino a 100 combinazioni univoche di partizioni e bucket. Ad esempio, è possibile avere 100 partizioni se non vengono specificati bucket.

CREATE TABLE ctas_csv_partitioned WITH ( format = 'TEXTFILE', external_location = 's3://amzn-s3-demo-bucket/ctas_csv_partitioned/', partitioned_by = ARRAY['key1']) AS SELECT name1, address1, comment1, key1 FROM tables1;
CREATE TABLE ctas_json_partitioned WITH ( format = 'JSON', external_location = 's3://amzn-s3-demo-bucket/ctas_json_partitioned/', partitioned_by = ARRAY['key1']) AS select name1, address1, comment1, key1 FROM table1;
Esempio: creazione di tabelle con bucket e partizionate

L'esempio seguente mostra una query CREATE TABLE AS SELECT che utilizza sia il partizionamento sia il bucketing per archiviare i risultati della query in Amazon S3. I risultati vengono partizionati e viene eseguito il bucketing in base a diverse colonne. Athena supporta un massimo di 100 combinazioni uniche di bucket e partizioni. Ad esempio, se si crea una tabella con cinque bucket, sono supportate 20 partizioni con cinque bucket ciascuno. Per la sintassi, consulta CTASproprietà della tabella.

Per ulteriori informazioni sulla scelta delle colonne per il bucketing, consulta Usa il partizionamento e il bucketing.

CREATE TABLE ctas_avro_bucketed WITH ( format = 'AVRO', external_location = 's3://amzn-s3-demo-bucket/ctas_avro_bucketed/', partitioned_by = ARRAY['nationkey'], bucketed_by = ARRAY['mktsegment'], bucket_count = 3) AS SELECT key1, name1, address1, phone1, acctbal, mktsegment, comment1, nationkey FROM table1;
Esempio: creazione di una tabella Iceberg con dati Parquet

Nell'esempio seguente viene creata una tabella Iceberg con file di dati Parquet. I file vengono partizionati per mese nella colonna dt nella table1. Nell'esempio vengono aggiornate le proprietà di mantenimento della tabella in modo che per impostazione predefinita vengano conservati 10 snapshot su ogni ramo della tabella. Vengono mantenuti anche gli snapshot degli ultimi 7 giorni. Per ulteriori informazioni sulle proprietà delle tabelle Iceberg in Athena, consulta Specificare le proprietà della tabella.

CREATE TABLE ctas_iceberg_parquet WITH (table_type = 'ICEBERG', format = 'PARQUET', location = 's3://amzn-s3-demo-bucket/ctas_iceberg_parquet/', is_external = false, partitioning = ARRAY['month(dt)'], vacuum_min_snapshots_to_keep = 10, vacuum_max_snapshot_age_seconds = 604800 ) AS SELECT key1, name1, dt FROM table1;
Esempio: creazione di una tabella Iceberg con dati Avro

Nell'esempio seguente viene creata una tabella Iceberg con file di dati Avro partizionati da key1.

CREATE TABLE ctas_iceberg_avro WITH ( format = 'AVRO', location = 's3://amzn-s3-demo-bucket/ctas_iceberg_avro/', is_external = false, table_type = 'ICEBERG', partitioning = ARRAY['key1']) AS SELECT key1, name1, date FROM table1;