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 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 chiaveEXTERNAL
. Se utilizziCREATE TABLE
senza la parola chiaveEXTERNAL
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 clausoleROW FORMAT
,STORED AS
eWITH SERDEPROPERTIES
.
- [IF NOT EXISTS]
-
Questo parametro verifica se esiste già una tabella con lo stesso nome. In caso affermativo, il parametro restituisce
TRUE
e Amazon Athena annulla l'azioneCREATE 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, racchiuditable_name
tra virgolette, ad esempio"table123"
. Setable_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 [COMMENT col_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
(_)
. Secol_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 colonneIl valore
data_type
può essere qualunque tra i seguenti:-
boolean
: i valori validi sonotrue
efalse
. -
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 DDL (Data Definition Language) comeCREATE TABLE
, utilizzare la parola chiaveint
per rappresentare un numero intero. In tutte le altre query, utilizzare la parola chiaveinteger
, doveinteger
è 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 driver JDBC viene restituitointeger
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 va da 4.94065645841246544e-324d a 1.79769313486231570e+308d, positivo o negativo.double
segue IEEE Standard for Floating-Point Arithmetic (IEEE 754). -
float
: un numero a virgola mobile a precisione singola a 32 bit. L'intervallo va da 1.40129846432481707e-45 a 3.40282346638528860e+38, positivo o negativo.float
segue IEEE Standard for Floating-Point Arithmetic (IEEE 754). Equivalente areal
in Presto. In Athena, usafloat
nelle istruzioni DDL comeCREATE TABLE
ereal
nelle funzioni SQL comeSELECT CAST
. Il AWS Glue crawler restituisce i valori infloat
, mentre Athena li traducereal
e li digita internamente (vedi le notefloat
di rilascio). 5 giugno 2018 -
decimal [ (
, doveprecision
,scale
) ]
è il numero totale di cifre eprecision
(facoltativo) è il numero di cifre nella parte frazionaria, il valore di default è 0. Ad esempio, è possibile usare il tipo di queste definizioni:scale
decimal(11,5)
,decimal(15)
. Il valore massimo perprecision
è 38 e il valore massimo per è 38.scale
Per specificare valori decimali come letterali, ad esempio durante la selezione delle righe con un determinato valore decimale nell'espressione di una query DDL, specifica la definizione di tipo
decimal
e indica 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 esempiochar(10)
. Per ulteriori informazioni, consulta la sezione relativa a tipo di dati Hive CHAR. -
varchar
: lunghezza variabile dei dati dei caratteri specificata tra 1 e 65535, ad esempiovarchar(10)
. Per ulteriori informazioni, consulta la sezione relativa a tipo di dati Hive VARCHAR. -
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 invarchar
. -
binary
: (per i dati in Parquet) -
date
: un dato in formato ISO, ad esempio
. Ad esempioYYYY
-MM
-DD
date '2008-09-15'
. Un'eccezione è l'Open CSVSer De, che utilizza il numero di giorni trascorsi dal 1° gennaio 1970. Per ulteriori informazioni, consulta Apri CSV SerDe per l'elaborazione di CSV. -
timestamp
: data e ora istantanea in un formato compatibile conjava.sql.Timestamp
fino a una risoluzione massima in millisecondi, come
. Ad esempioyyyy
-MM
-dd
HH
:mm
:ss
[.f...
]timestamp '2008-09-15 03:04:05.324'
. Un'eccezione è l'Open CSVSer De, che utilizzaTIMESTAMP
dati in formato numerico UNIX (ad esempio,).1579059880000
Per ulteriori informazioni, consulta Apri CSV SerDe per l'elaborazione di CSV. -
array
< data_type > -
map
< primitive_type, data_type > -
struct
< col_name : data_type [COMMENT col_comment] [, ...] >
-
- [COMMENT table_comment]
-
Crea la proprietà della tabella
comment
e la popola con il parametrotable_comment
specificato. - [PARTITIONED BY (col_name data_type [ COMMENT col_comment ], ... ) ]
-
Crea una tabella partizionata con una o più colonne di partizione in cui sono specificati
col_name
,data_type
ecol_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 percol_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 successiva query che comprenda la clausola MSCK REPAIR TABLE per aggiornare i metadati della partizione, 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.
- [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]
-
Divide, con o senza partizionamento, i dati nelle colonne
col_name
specificate in sottoinsiemi di dati chiamati bucket. Il parametronum_buckets
specifica il numero di bucket da creare. Il bucketing può migliorare le prestazioni di alcune query su set di dati di grandi dimensioni.
- [ROW FORMAT 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 clausolaDELIMITED
o, in alternativa, utilizzare la clausolaSERDE
come descritto di seguito. SeROW FORMAT
viene omesso o specificato,ROW FORMAT DELIMITED
viene utilizzato un file nativo SerDe.-
[DELIMITED FIELDS TERMINATED BY char [ESCAPED BY char]]
-
[DELIMITED COLLECTION ITEMS TERMINATED BY char]
-
[MAP KEYS TERMINATED BY char]
-
[LINES TERMINATED BY char]
-
[NULL DEFINED AS char]
Disponibile solo con Hive 0.13 e quando il formato del file STORED AS è
TEXTFILE
.
--OPPURE--
-
SERDE 'serde_name' [WITH SERDEPROPERTIES ("property_name" = "property_value", "property_name" = "property_value" [, ...] )]
serde_name
Indica la modalità SerDe di utilizzo. LaWITH SERDEPROPERTIES
clausola consente di fornire una o più proprietà personalizzate consentite da. SerDe
-
- [STORED AS file_format]
-
Specifica il formato di file per i dati della tabella. Se omesso, il valore predefinito è
TEXTFILE
. Le opzioni perfile_format
sono:-
SEQUENCEFILE
-
TEXTFILE
-
RCFILE
-
ORC
-
PARQUET
-
AVRO
-
ION
-
INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
-
- [POSIZIONE 's3://amzn-s3-demo-bucket/[folder]/']
-
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'='true | false',] ['classification'='classification_value',] 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 sutrue
indica che il set di dati sottostanti specificato daLOCATION
è crittografati. Se omesso e se le impostazioni del gruppo di lavoro non sostituiscono le impostazioni lato client, viene utilizzatofalse
. Se omesso o impostato sufalse
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 laclassification
proprietà. Per eseguire processi ETL, è AWS Glue necessario creare una tabella con laclassification
proprietà per indicare il tipo di dati per AWS Glue ascsv
,,parquet
orc
avro
, o.json
Ad esempio'classification'='csv'
. Se questa proprietà non viene specificata, i processi ETL non saranno completati con successo. È possibile specificarla in un secondo momento tramite la console AWS Glue , l'API o la CLI. Per ulteriori informazioni, consulta la sezione Authoring Jobs in Crea tabelle per lavori ETLAWS 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 compressione ZSTD. I valori possibili sono compresi tra 1 e 22. Il valore predefinito è 3. Per ulteriori informazioni, consulta Usa i livelli di compressione ZSTD.Per ulteriori informazioni su altre proprietà della tabella, consulta ALTER TABLE SET TBLPROPERTIES.
Esempi
L'CREATE TABLE
istruzione 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 dati TSV 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 tabella TSV 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 LOCATION
la 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.