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

CREATE TABLE

Crea una tabella con il nome e i parametri specificati dall'utente.

Nota

Questa pagina contiene informazioni di riferimento riepilogative. Per ulteriori informazioni sulla creazione delle tabelle in Athena e un esempio di istruzione CREATE TABLE, consulta la sezione Crea tabelle in Athena. Per vedere esempio di creazione di un database o di una tabella e di esecuzione di una query SELECT sulla tabella di Athena, consulta Inizia a usare.

Riepilogo

CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [WITH SERDEPROPERTIES (...)] [LOCATION 's3://amzn-s3-demo-bucket/[folder]/'] [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

Parametri

EXTERNAL

Specifica che la tabella si basa su un file di dati sottostante esistente in Amazon S3 nella posizione specificata dall'utente in LOCATION. Tranne che durante la creazione di tabelle Iceberg, utilizza sempre la parola chiave EXTERNAL. Se utilizzi CREATE TABLE senza la parola chiave EXTERNAL per le tabelle non Iceberg, Athena genera un errore. Quando crei una tabella esterna, i dati a cui fai riferimento devono rispettare il formato predefinito o il formato specificato con le clausole ROW FORMAT, STORED AS e WITH SERDEPROPERTIES.

[SE NOTEXISTS]

Questo parametro verifica se esiste già una tabella con lo stesso nome. In caso affermativo, il parametro restituisce TRUE e Amazon Athena annulla l'azione CREATE TABLE. Poiché l'annullamento avviene prima che Athena richiami il catalogo dati, non emette alcun evento. AWS CloudTrail

[db_name.]table_name

Specifica un nome per la tabella da creare. Il parametro facoltativo db_name specifica il database in cui è presente la tabella. Se omesso, sarà utilizzato il database corrente. Se il nome della tabella include numeri, racchiudi table_name tra virgolette, ad esempio "table123". Se table_name inizia con un trattino basso, utilizza l'apice inverso, ad esempio `_mytable`. I caratteri speciali (a eccezione del trattino basso) non sono supportati.

I nomi di tabella di Athena fanno distinzione tra maiuscole e minuscole; se però utilizzi Apache Spark, dovrai specificare nomi di tabella in minuscolo. Per le restrizioni sui nomi delle tabelle in Athena, vedere. Database di nomi, tabelle e colonne

[(col_name data_type [COMMENTcol_comment] [,...])]

Specifica il nome di ogni colonna da creare, insieme al tipo di dati della colonna. Nei nomi di colonna non sono ammessi caratteri speciali diversi dal trattino basso (_). Se col_name inizia con un trattino basso, racchiudi il nome della colonna tra apici inversi, ad esempio `_mycolumn`. Per le restrizioni sui nomi delle colonne in Athena, vedere. Database di nomi, tabelle e colonne

Il valore data_type può essere qualunque tra i seguenti:

  • boolean: i valori validi sono true e false.

  • tinyint: un numero intero firmato a 8 bit in formato a due complementi, con un valore minimo pari a -2^7 e un valore massimo pari a 2^7-1.

  • smallint: un numero intero firmato a 16 bit in formato a due complementi, con un valore minimo pari a -2^15 e un valore massimo pari a 2^15-1.

  • int— Nelle query Data Definition Language (DDL) comeCREATE TABLE, usa la int parola chiave per rappresentare un numero intero. In tutte le altre query, utilizzare la parola chiave integer, dove integer è rappresentato come valore firmato a 32 bit in formato a due complementi, con un valore minimo pari a -2^31 e un valore massimo pari a 2^31-1. Nel JDBC driver, integer viene restituito, per garantire la compatibilità con le applicazioni di analisi aziendale.

  • bigint: un numero intero firmato a 64 bit in formato a due complementi, con un valore minimo pari a -2^63 e un valore massimo pari a 2^63-1.

  • double: un numero a virgola mobile a precisione doppia firmato a 64 bit. L'intervallo è compreso tra 4,94065645841246544e-324d e 1,79769313486231570e+308d, positivo o negativo. doublesegue IEEE lo standard per l'aritmetica a virgola mobile (754). IEEE

  • float: un numero a virgola mobile a precisione singola a 32 bit. L'intervallo è compreso tra 1,40129846432481707e-45 e 3,40282346638528860e+38, positivo o negativo. floatsegue IEEE lo standard per l'aritmetica a virgola mobile (754). IEEE Equivalente a real in Presto. In Athena, usa float in DDL istruzioni come CREATE TABLE e real in SQL funzioni come. SELECT CAST Il AWS Glue crawler restituisce i valori infloat, mentre Athena li traduce real e li digita internamente (vedi le note float di rilascio). 5 giugno 2018

  • decimal [ (precision, scale) ], dove precision è il numero totale di cifre e scale (facoltativo) è il numero di cifre nella parte frazionaria, il valore di default è 0. Ad esempio, è possibile usare il tipo di queste definizioni: decimal(11,5), decimal(15). Il valore massimo per precision è 38 e il valore massimo per scale è 38.

    Per specificare i valori decimali come valori letterali, ad esempio quando si selezionano righe con un valore decimale specifico in un'DDLespressione di query, specifica la definizione del decimal tipo ed elenca il valore decimale come letterale (tra virgolette singole) nella query, come in questo esempio:. decimal_value = decimal '0.12'

  • char: lunghezza fissa dei dati dei caratteri specificata tra 1 e 255, ad esempio char(10). Per ulteriori informazioni, consulta Tipo di dati Hive. CHAR

  • varchar: lunghezza variabile dei dati dei caratteri specificata tra 1 e 65535, ad esempio varchar(10). Per ulteriori informazioni, consulta Tipo di dati VARCHAR Hive.

  • string: una stringa letterale racchiusa tra virgolette singole o doppie.

    Nota

    I tipi di dati non stringa non possono essere diffusi in string in Athena, ma possono essere diffusi in varchar.

  • binary: (per i dati in Parquet)

  • date— Una data in ISO formato, ad esempioYYYY-MM-DD. Ad esempio date '2008-09-15'. Un'eccezione è l'O penCSVSer De, che utilizza il numero di giorni trascorsi dal 1° gennaio 1970. Per ulteriori informazioni, consulta Aperto CSV SerDe per l'elaborazione CSV.

  • timestamp: data e ora istantanea in un formato compatibile con java.sql.Timestamp fino a una risoluzione massima in millisecondi, come yyyy-MM-dd HH:mm:ss[.f...]. Ad esempio timestamp '2008-09-15 03:04:05.324'. Un'eccezione è l'O penCSVSer De, che utilizza TIMESTAMP dati in formato UNIX numerico (ad esempio,). 1579059880000 Per ulteriori informazioni, consulta Aperto CSV SerDe per l'elaborazione CSV.

  • array < data_type >

  • map < primitive_type, data_type >

  • struct < col_name : data_type [COMMENT col_comment] [, ...] >

[COMMENTtable_comment]

Crea la proprietà della tabella comment e la popola con il parametro table_comment specificato.

[PARTITIONEDBY (tipo_dati col_name [col_comment],...)] COMMENT

Crea una tabella partizionata con una o più colonne di partizione in cui sono specificati col_name, data_type e col_comment. Una tabella può avere una o più partizioni, che consistono in una combinazione distinta di nome e valore per la colonna. Viene creata una directory di dati separata per ciascuna combinazione specificata; in alcune circostanze ciò può migliorare le prestazioni delle query. Le colonne partizionate non esistono all'interno dei dati della tabella stessa. Se per col_name usi un valore uguale a una colonna della tabella, viene restituito un errore. Per ulteriori informazioni, consulta la pagina relativa al partizionamento di dati.

Nota

Dopo aver creato una tabella con partizioni, esegui una query successiva che consiste nella MSCKREPAIRTABLEclausola per aggiornare i metadati delle partizioni, ad esempio. MSCK REPAIR TABLE cloudfront_logs; Per le partizioni che non sono compatibili con Hive, utilizzare ALTER TABLE ADD PARTITION per caricare le partizioni in modo da poter eseguire una query sui dati.

[CLUSTEREDBY (col_name, col_name,...) INTOBUCKETSnum_buckets]

Divide, con o senza partizionamento, i dati nelle colonne col_name specificate in sottoinsiemi di dati chiamati bucket. Il parametro num_buckets specifica il numero di bucket da creare. Il bucketing può migliorare le prestazioni di alcune query su set di dati di grandi dimensioni.

[formato_riga] ROW FORMAT

Specifica il formato di riga della tabella e i relativi dati di origine sottostanti, se applicabile. In row_format, è possibile specificare uno o più delimitatori con la clausola DELIMITED o, in alternativa, utilizzare la clausola SERDE come descritto di seguito. Se ROW FORMAT viene omesso o specificato, ROW FORMAT DELIMITED viene utilizzato un nativo SerDe.

  • [DELIMITEDFIELDSTERMINATEDBY char [ESCAPEDBY char]]

  • [PER DELIMITED COLLECTION ITEMS TERMINATED char]

  • [MAPKEYSTERMINATEDDI char]

  • [LINESTERMINATEDDI char]

  • [NULLDEFINEDCarattere AS]

    Disponibile solo con Hive 0.13 e quando il formato di file STORED AS è. TEXTFILE

--OPPURE--

  • SERDE'nome_server' [WITHSERDEPROPERTIES(«property_name» = «property_value», «property_name» = «property_value» [,...])]

    serde_nameIndica il da usare. SerDe La WITH SERDEPROPERTIES clausola consente di fornire una o più proprietà personalizzate consentite da. SerDe

[Formato file STORED AS]

Specifica il formato di file per i dati della tabella. Se omesso, il valore predefinito è TEXTFILE. Le opzioni per file_format sono:

  • SEQUENCEFILE

  • TEXTFILE

  • RCFILE

  • ORC

  • PARQUET

  • AVRO

  • ION

  • INPUTFORMATinput_format_classname output_format_classname OUTPUTFORMAT

['s3://amzn-s3-demo-bucket/[folder]/'] LOCATION

Specifica la posizione dei dati sottostanti in Amazon S3 da cui viene creata la tabella. Il percorso della posizione deve essere un nome bucket o un nome bucket e una o più cartelle. Se si utilizzano le partizioni, specificare la radice dei dati partizionati. Per ulteriori informazioni sulla posizione della tabella, consulta Specificare la posizione di una tabella in Amazon S3. Per informazioni sul formato dei dati e le autorizzazioni, consulta la sezione Considerazioni su Amazon S3.

Utilizza una barra finale per la cartella o il bucket. Non utilizzare nomi di file o caratteri glob.

Utilizza:

s3://amzn-s3-demo-bucket/

s3://amzn-s3-demo-bucket/folder/

s3://amzn-s3-demo-bucket/folder/anotherfolder/

Non utilizzare:

s3://amzn-s3-demo-bucket

s3://amzn-s3-demo-bucket/*

s3://amzn-s3-demo-bucket/mydatafile.dat

[TBLPROPERTIES(['has_encrypted_data'='vero | falso',] ['classification'='valore_classificazione',] property_name=property_value [,...])]

Specifica coppie personalizzate di metadati chiave-valore per la definizione della tabella, oltre a proprietà predefinite per la tabella, ad esempio "comment".

has_encrypted_data: Athena ha una proprietà integrata, has_encrypted_data. Impostata su true indica che il set di dati sottostanti specificato da LOCATION è crittografati. Se omesso e se le impostazioni del gruppo di lavoro non sostituiscono le impostazioni lato client, viene utilizzato false. Se omesso o impostato su false con dati sottostanti crittografati, la query restituisce un errore. Per ulteriori informazioni, consulta Crittografia a riposo.

classificazione: le tabelle create per Athena nella CloudTrail console vengono aggiunte cloudtrail come valore per la classification proprietà. Per eseguire i ETL job, è AWS Glue necessario creare una tabella con la classification proprietà per indicare il tipo di dati per AWS Glue ascsv,parquet, orcavro, ojson. Ad esempio 'classification'='csv'. ETLi lavori falliranno se non si specifica questa proprietà. Successivamente è possibile specificarlo utilizzando la AWS Glue consoleAPI, oCLI. Per ulteriori informazioni, consulta la sezione Authoring Jobs in Creare tabelle per i ETL lavoriAWS Glue nella AWS Glue Developer Guide.

compression_level: la proprietà compression_level specifica 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.

Per ulteriori informazioni su altre proprietà della tabella, consulta ALTER TABLE SET TBLPROPERTIES.

Esempi

L'CREATE TABLEistruzione di esempio seguente crea una tabella basata su dati planetari separati da tabulazioni archiviati in Amazon S3.

CREATE EXTERNAL TABLE planet_data ( planet_name string, order_from_sun int, au_to_sun float, mass float, gravity_earth float, orbit_years float, day_length float ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/tsv/'

Notare i seguenti punti:

  • La ROW FORMAT DELIMITED clausola indica che i dati sono delimitati da un carattere specifico.

  • La FIELDS TERMINATED BY '\t' clausola specifica che i campi nei TSV dati sono separati dal carattere di tabulazione ('\ t').

  • La STORED AS TEXTFILE clausola indica che i dati vengono archiviati come file di testo semplice in Amazon S3.

Per interrogare i dati, puoi usare una semplice SELECT dichiarazione come la seguente:

SELECT * FROM planet_data

Per utilizzare l'esempio per creare la tua TSV tabella in Athena, sostituisci i nomi di tabelle e colonne con i nomi e i tipi di dati della tua tabella e delle tue colonne e aggiorna la LOCATION clausola in modo che punti al percorso Amazon S3 in cui sono archiviati i tuoi file. TSV

Per ulteriori informazioni sulla creazione delle tabelle, consulta Crea tabelle in Athena.