Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Permet de créer une table avec le nom et les paramètres que vous spécifiez.
Note
Cette page contient un résumé des informations de référence. Pour plus d'informations sur la création des tables dans Athena et un exemple de déclaration CREATE TABLE
, consultez Création de tables dans Athena. En guise d'exemple en matière de création d'une base de données, de création d'une table et d'exécution d'une requête SELECT
sur la table dans Athena, voir Mise en route.
Résumé
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 [, ...] ) ]
Paramètres
- EXTERNAL
-
Indique que la table est basée sur un fichier de données sous-jacent qui existe dans Simple Storage Service (Amazon S3), dans l'emplacement
LOCATION
que vous avez spécifié. Sauf lors de la création de tables Iceberg, utilisez toujours le mot-cléEXTERNAL
. Si vous utilisezCREATE TABLE
sans le mot cléEXTERNAL
pour des tables non Iceberg, Athena émet une erreur. Lorsque vous créez une table externe, les données référencées doivent respecter le format par défaut ou le format que vous spécifiez à l'aide des clausesROW FORMAT
,STORED AS
etWITH SERDEPROPERTIES
.
- [SI NOTEXISTS]
-
Ce paramètre vérifie si une table ayant le même nom existe déjà. Si c'est le cas, le paramètre renvoie
TRUE
et Amazon Athena annule l'actionCREATE TABLE
. L'annulation ayant lieu avant qu'Athéna n'appelle le catalogue de données, aucun événement n'est émis. AWS CloudTrail - [db_name.]table_name
-
Spécifie un nom pour la table à créer. Le paramètre facultatif
db_name
indique la base de données dans laquelle se trouve la table. Si ce paramètre n'est pas spécifié, la base de données en cours est utilisée par défaut. Si le nom de la table comporte des chiffres, metteztable_name
entre guillemets, par exemple"table123"
. Sitable_name
commence par un trait de soulignement, utilisez des accents graves, par exemple`_mytable`
. Les caractères spéciaux (autres que le trait de soulignement) ne sont pas pris en charge.Les noms de table Athena ne sont pas sensibles à la casse. Cependant, si vous travaillez avec Apache Spark, les noms de table doivent être en minuscule. Pour les restrictions relatives aux noms de tables dans Athena, voir. Nommez les bases de données, les tables et les colonnes
- [(col_name data_type [COMMENTcol_comment] [,...])]
-
Indique le nom de chaque colonne à créer, ainsi que le type de données de la colonne. Les noms de colonne n'acceptent pas de caractères spéciaux autres que le trait de soulignement
(_)
. Sicol_name
commence par un trait de soulignement, placez le nom de colonne entre des accents graves, par exemple`_mycolumn`
. Pour les restrictions relatives aux noms de colonnes dans Athena, voir. Nommez les bases de données, les tables et les colonnesdata_type
peut avoir l'une des valeurs suivantes :-
boolean
: les valeurs sonttrue
etfalse
. -
tinyint
– Un entier signé de 8 bits au format de complément à deux avec une valeur minimum de -2^7 et une valeur maximum de 2^7-1. -
smallint
– Un entier signé de 16 bits au format de complément à deux avec une valeur minimum de -2^15 et une valeur maximum de 2^15-1. -
int
— Dans des requêtes telles que le langage de définition de données (DDL)CREATE TABLE
, utilisez leint
mot clé pour représenter un entier. Dans d'autres requêtes, utilisez le mot cléinteger
, oùinteger
est représenté comme une valeur signée de 32 bits au format complément à deux, avec une valeur minimale de -2^31 et une valeur maximale de 2^31-1. Dans le JDBC pilote,integer
est renvoyé, afin de garantir la compatibilité avec les applications d'analyse commerciale. -
bigint
– Un entier signé de 64 bits au format de complément à deux avec une valeur minimum de -2^63 et une valeur maximum de 2^63-1. -
double
: un nombre à virgule flottante signé de 64 bits en double précision. La plage va de 4,94065645841246544e-324d à 1,79769313486231570e+308d, positif ou négatif.double
suit la IEEE norme pour l'arithmétique à virgule flottante (754). IEEE -
float
: un nombre à virgule flottante signé à simple précision de 32 bits. La plage est comprise entre 1,40129846432481707e-45 et 3,40282346638528860e+38, positif ou négatif.float
suit la IEEE norme pour l'arithmétique à virgule flottante (754). IEEE Équivalent àreal
dans Presto. Dans Athena, utilisez des DDL instructions commeCREATE TABLE
etfloat
real
dans des SQL fonctions comme.SELECT CAST
Le AWS Glue crawler renvoie des valeursfloat
, et Athena lesreal
traduitfloat
et les saisit en interne (voir 5 juin 2018 les notes de publication). -
decimal [ (
, oùprecision
,scale
) ]
est le nombre total de chiffres etprecision
(facultatif) est le nombre de chiffres dans la partie fraction, la valeur par défaut est 0. Par exemple, utilisez ces définitions de type :scale
decimal(11,5)
,decimal(15)
. La valeur maximale pourprecision
est 38, et la valeur maximale pourscale
est de 38 ans.Pour spécifier des valeurs décimales sous forme de littéraux, par exemple lorsque vous sélectionnez des lignes contenant une valeur décimale spécifique dans une DDL expression de requête, spécifiez la définition du
decimal
type et listez la valeur décimale sous forme de littéral (entre guillemets simples) dans votre requête, comme dans cet exemple :.decimal_value = decimal '0.12'
-
char
: données en caractères de longueur fixe, avec une longueur spécifiée entre 1 et 255, par exemplechar(10)
. Pour plus d'informations, consultez la section Type de données CHAR Hive. -
varchar
: données en caractères de longueur variable, avec une longueur spécifiée entre 1 et 65535, par exemplevarchar(10)
. Pour plus d'informations, consultez la section Type de données VARCHAR Hive. -
string
: libellé chaîne entre guillemets simples ou doubles.Note
Les types de données autres que les chaînes de caractères ne peuvent pas être convertis en
string
dans Athena ; convertissez-les plutôt envarchar
. -
binary
– (pour les données au format Parquet) -
date
— Une date au ISO format, tel que
. Par exemple,YYYY
-MM
-DD
date '2008-09-15'
. Une exception est le O penCSVSer De, qui utilise le nombre de jours écoulés depuis le 1er janvier 1970. Pour de plus amples informations, veuillez consulter Ouvert CSV SerDe pour traitement CSV. -
timestamp
: date et heure instantanée dansjava.sql.Timestamp
jusqu'à une résolution maximale de millisecondes, comme
. Par exemple,yyyy
-MM
-dd
HH
:mm
:ss
[.f...
]timestamp '2008-09-15 03:04:05.324'
. Une exception est le O penCSVSer De, qui utiliseTIMESTAMP
des données au format UNIX numérique (par exemple,1579059880000
). Pour de plus amples informations, veuillez consulter Ouvert CSV SerDe pour traitement CSV. -
array
< data_type > -
map
< primitive_type, data_type > -
struct
< col_name : data_type [comment col_comment] [, ...] >
-
- [COMMENTtable_commentaire]
-
Crée la propriété de table
comment
et la renseigne avec l'informationtable_comment
que vous spécifiez. - [PARTITIONEDPAR (col_name data_type [COMMENTcol_comment],...)]
-
Crée une table partitionnée avec une ou plusieurs colonnes de partition dont les valeurs
col_name
,data_type
etcol_comment
sont spécifiées. Une table peut comporter une ou plusieurs partitions, qui se composent d'une combinaison nom/valeur de colonne distincte. Un répertoire de données distinct est créé pour chaque combinaison spécifiée, ce qui peut améliorer les performances des requêtes dans certaines circonstances. Les colonnes partitionnées n’existent pas au sein même des données de la table. Si la valeur decol_name
est identique à celle d'une colonne de table, une erreur est renvoyée. Pour en savoir plus, consultez Partitionnement de données.Note
Après avoir créé une table avec des partitions, exécutez une requête suivante contenant la MSCKREPAIRTABLEclause d'actualisation des métadonnées de partition, par exemple,
MSCK REPAIR TABLE cloudfront_logs;
. Pour les partitions qui ne sont pas compatibles avec Hive, utilisez ALTER TABLE ADD PARTITION pour charger les partitions de manière à pouvoir interroger les données.
- [CLUSTEREDPAR (col_name, col_name,...) INTOnum_buckets] BUCKETS
-
Divise, avec ou sans partitionnement, les données des colonnes
col_name
spécifiées en sous-ensembles de données appelés compartiments. Le paramètrenum_buckets
indique le nombre de compartiments à créer. Le compartimentage peut améliorer les performances de certaines requêtes sur de grands jeux de données.
- [ROWFORMATformat_ligne]
-
Spécifie le format de ligne de la table et, le cas échéant, de ses données source sous-jacentes. Pour
row_format
, vous pouvez spécifier un ou plusieurs délimiteurs avec la clauseDELIMITED
, ou utiliser la clauseSERDE
comme décrit ci-dessous. S'ROW FORMAT
il est omis ouROW FORMAT DELIMITED
spécifié, un natif SerDe est utilisé.-
[DELIMITEDFIELDSTERMINATEDPAR caractère [ESCAPEDPAR caractère]]
-
[DELIMITEDCOLLECTIONITEMSTERMINATEDPAR char]
-
[MAPKEYSTERMINATEDPAR char]
-
[LINESTERMINATEDPAR char]
-
[NULLDEFINEDCaractère AS]
Disponible uniquement avec Hive 0.13 et lorsque le format de fichier STORED AS est.
TEXTFILE
--OR--
-
SERDE'serde_name' [WITHSERDEPROPERTIES(« nom_propriété » = « valeur_propriété », « nom_propriété » = « valeur_propriété » [,...])]
Le
serde_name
indique le SerDe à utiliser. LaWITH SERDEPROPERTIES
clause vous permet de fournir une ou plusieurs propriétés personnalisées autorisées par le SerDe.
-
- [Format STORED de fichier AS]
-
Spécifie le format de fichier pour les données de table. Si ce paramètre n'est pas spécifié,
TEXTFILE
est la valeur par défaut. Les options defile_format
sont les suivantes :-
SEQUENCEFILE
-
TEXTFILE
-
RCFILE
-
ORC
-
PARQUET
-
AVRO
-
ION
-
INPUTFORMATinput_format_classname output_format_classname OUTPUTFORMAT
-
- [LOCATION's3://amzn-s3-demo-bucket/[folder]/']
-
Indique l'emplacement des données sous-jacentes dans Simple Storage Service (Amazon S3) à partir duquel la table est créée. Le chemin d'accès de l'emplacement doit être un nom de compartiment ou un nom de compartiment et un ou plusieurs dossiers. Si vous utilisez des partitions, spécifiez la racine des données partitionnées. Pour plus d’informations sur l’emplacement des tables, consultez Spécifier l'emplacement d'une table dans Amazon S3. Pour obtenir des informations sur le format des données et les autorisations, consultez Considérations relatives à Amazon S3.
Utilisez une barre oblique pour votre dossier ou compartiment. N'utilisez pas de noms de fichiers ou de caractères généraux.
Utilisez :
s3://amzn-s3-demo-bucket/
s3://amzn-s3-demo-bucket/
folder
/s3://amzn-s3-demo-bucket/
folder
/anotherfolder
/N'utilisez pas :
s3://amzn-s3-demo-bucket
s3://amzn-s3-demo-bucket/*
s3://amzn-s3-demo-bucket/
mydatafile.dat
- [TBLPROPERTIES(['has_encrypted_data'='vrai | false',] ['classification'='classification_value',] property_name=property_value [,...])]
-
Spécifie des paires clés-valeurs de métadonnées personnalisées pour la définition de la table en plus des propriétés de table prédéfinies, par exemple
"comment"
.has_encrypted_data : Athena dispose d'une propriété intégrée,
has_encrypted_data
. Attribuez la valeurtrue
à cette propriété pour indiquer que l'ensemble de données sous-jacent spécifié parLOCATION
est chiffré. Si ce paramètre n'est pas spécifié et si les paramètres du groupe de travail ne remplacent pas les paramètres côté client,false
est utilisé. Si ce paramètre n'est pas spécifié ou si la valeurfalse
est définie lorsque des données sous-jacentes sont chiffrées, la requête génère une erreur. Pour de plus amples informations, veuillez consulter Chiffrement au repos.classification — Les tables créées pour Athena dans la CloudTrail console sont ajoutées en
cloudtrail
tant que valeur à laclassification
propriété. Pour exécuter ETL des tâches AWS Glue , vous devez créer une table avec laclassification
propriété indiquant le type de données pour AWS Glue ascsv
parquet
,orc
,avro
, oujson
. Par exemple,'classification'='csv'
. ETLles tâches échoueront si vous ne spécifiez pas cette propriété. Vous pouvez ensuite le spécifier à l'aide de la AWS Glue consoleAPI, ouCLI. Pour plus d'informations, consultez Création de tableaux pour les ETL tâches la section « Création de tâches dans AWS Glue » dans le manuel du AWS Glue développeur.compression_level : la propriété
compression_level
spécifie le niveau de compression à utiliser. Cette propriété s'applique uniquement à la ZSTD compression. Les valeurs possibles sont comprises entre 1 et 22. La valeur par défaut est 3. Pour plus d’informations, consultez Utiliser les niveaux ZSTD de compression.Pour plus d’informations sur les autres propriétés de table, consultez ALTER TABLE SET TBLPROPERTIES.
Exemples
L'exemple d'CREATE TABLE
instruction suivant crée une table basée sur des données planétaires séparées par des tabulations stockées dans 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/'
Notez les points suivants :
-
La
ROW FORMAT DELIMITED
clause indique que les données sont délimitées par un caractère spécifique. -
La
FIELDS TERMINATED BY '\t'
clause indique que les champs des TSV données sont séparés par le caractère de tabulation ('\ t'). -
La
STORED AS TEXTFILE
clause indique que les données sont stockées sous forme de fichiers texte brut dans Amazon S3.
Pour interroger les données, vous pouvez utiliser une SELECT
instruction simple comme celle-ci :
SELECT * FROM planet_data
Pour utiliser cet exemple pour créer votre propre TSV table dans Athena, remplacez les noms de table et de colonne par les noms et types de données de votre propre table et de vos colonnes, et mettez à jour la LOCATION
clause pour qu'elle pointe vers le chemin Amazon S3 où vos TSV fichiers sont stockés.
Pour plus d'informations sur la création de tables, consultez Création de tables dans Athena.