

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.

# CREATE TABLE AS
<a name="create-table-as"></a>

Crée une table remplie avec les résultats d'une requête [SELECT](select.md). Pour créer une table vide, utilisez [CREATE TABLE](create-table.md). `CREATE TABLE AS` combine une instruction DDL `CREATE TABLE` avec une instruction DML `SELECT` et contient donc techniquement tant des instructions DDL que DML. Notez que, bien que l'instruction `CREATE TABLE AS` soit regroupée ici avec d'autres instructions DDL, les requêtes CTAS dans Athena sont traitées comme des requêtes DML à des fins de Service Quotas. Pour plus d'informations sur les Service Quotas Athena, consultez [Service Quotas](service-limits.md).

**Note**  
Pour les instructions CTAS, le paramètre de propriétaire du compartiment attendu ne s'applique pas à l'emplacement de la table de destination dans Simple Storage Service (Amazon S3). Le paramètre de propriétaire du compartiment attendu s'applique uniquement à l'emplacement de sortie Simple Storage Service (Amazon S3) que vous spécifiez pour les résultats de la requête Athena. Pour de plus amples informations, veuillez consulter [Spécification d’un emplacement de résultats des requêtes à l’aide de la console Athena](query-results-specify-location-console.md).

Pour plus d'informations sur l'instruction `CREATE TABLE AS` allant au-delà de la portée de cette rubrique de référence, consultez [Création d’une table à partir des résultats des requêtes (CTAS)](ctas.md).

**Topics**
+ [Résumé](#synopsis)
+ [Propriétés de la table CTAS](#ctas-table-properties)
+ [Exemples](#ctas-table-examples)

## Résumé
<a name="synopsis"></a>

```
CREATE TABLE table_name
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]
```

Où :

**WITH ( property\_name = expression [, ...] )**  
Liste de propriétés facultatives de la table CTAS, dont certaines sont spécifiques au format de stockage de données. Consultez [Propriétés de la table CTAS](#ctas-table-properties).

**query**  
Une requête [SELECT](select.md) qui est utilisée pour créer une nouvelle table.  
Si vous envisagez de créer une requête avec les partitions, spécifiez les noms des colonnes partitionnées à la fin de la liste de colonnes dans l'instruction `SELECT`.

**[ WITH [ NO ] DATA ]**  
Si `WITH NO DATA` est utilisé, une nouvelle table vide avec le même schéma que la table d'origine est créée.

**Note**  
Pour inclure des en-têtes de colonne dans la sortie du résultat de votre requête, vous pouvez utiliser une simple requête `SELECT` au lieu d'une requête CTAS. Vous pouvez récupérer les résultats depuis l'emplacement des résultats de votre requête ou télécharger les résultats directement à l'aide de la console Athena. Pour plus d’informations, consultez [Utilisation des résultats des requêtes et des requêtes récentes](querying.md). 

## Propriétés de la table CTAS
<a name="ctas-table-properties"></a>

Chaque table CTAS dans Athena dispose d'une liste des propriétés facultatives de table CTAS que vous spécifiez à l'aide de `WITH (property_name = expression [, ...] )`. Pour obtenir des informations sur l'utilisation de ces paramètres, consultez [Exemples de requêtes CTAS](ctas-examples.md).

** `WITH (property_name = expression [, ...], )` **    
 `table_type = ['HIVE', 'ICEBERG']`   
Facultatif. La valeur par défaut est `HIVE`. Spécifie le type de table de la table résultante  
Exemple :  

```
WITH (table_type ='ICEBERG')
```  
 `external_location = [location]`   
Comme les tables Iceberg ne sont pas externes, cette propriété ne s'applique pas aux tables Iceberg. Pour définir l'emplacement de la racine d'une table Iceberg dans une instruction CTAS, utilisez la propriété `location` décrite plus loin dans cette rubrique.
Facultatif. L'emplacement où Athena enregistre votre requête CTAS dans Amazon S3.  
Exemple :  

```
 WITH (external_location ='s3://amzn-s3-demo-bucket/tables/parquet_table/')
```
Athena n'utilise pas le même chemin pour les résultats de la requête deux fois. Si vous spécifiez l'emplacement manuellement, assurez-vous que cet emplacement Simple Storage Service (Amazon S3) n'a pas de données. Athena ne tente jamais de supprimer vos données. Si vous souhaitez utiliser le même emplacement à nouveau, nettoyez manuellement les données, faute de quoi votre requête CTAS échouera.  
Si vous exécutez une requête CTAS qui spécifie un `external_location` dans un groupe de travail qui [applique un emplacement de résultats de requête](workgroups-settings-override.md), la requête échoue avec un message d'erreur. Pour voir l’emplacement des résultats de la requête spécifié pour le groupe de travail, [consultez les détails du groupe de travail](viewing-details-workgroups.md).  
Si votre groupe de travail remplace le paramètre côté client pour l'emplacement des résultats de requête, Athena crée votre table à l'emplacement suivant :  

```
s3://amzn-s3-demo-bucket/tables/{{query-id}}/
```
Si vous n'utilisez pas la propriété `external_location` pour spécifier un emplacement et que votre groupe de travail ne remplace pas les [paramètres côté client](query-results-specify-location-console.md), Athena utilise votre paramètre côté client pour l'emplacement des résultats de la requête afin de créer votre table à l'emplacement suivant :  

```
s3://amzn-s3-demo-bucket/{{Unsaved-or-query-name}}/{{year}}/{{month}}/{{date}}/tables/{{query-id}}/
```  
 `is_external = [boolean]`   
Facultatif. Indique si la table est une table externe. Par défaut, la valeur est true. Pour les tables Iceberg, cette valeur doit être définie sur false.  
Exemple :  

```
WITH (is_external = false)
```  
 `location = [location]`   
Nécessaire pour les tables Iceberg. Spécifie l'emplacement racine de la table Iceberg à créer à partir des résultats de la requête.  
Exemple :  

```
WITH (location ='s3://amzn-s3-demo-bucket/tables/{{iceberg_table}}/')
```  
 `field_delimiter = [delimiter]`   
Facultatif et spécifique aux formats de stockage de données à base de texte. Délimiteur de champ à un seul caractère pour les fichiers CSV, TSV et les fichiers texte. Par exemple, `WITH (field_delimiter = ',')`. Actuellement, les délimiteurs de champ à plusieurs caractères ne sont pas pris en charge pour les requêtes CTAS. Si vous ne spécifiez pas de délimiteur de champs, `\001` est utilisé par défaut.  
 `format = [storage_format]`   
Format de stockage pour les résultats de requête CTAS, tel que `ORC`, `PARQUET`, `AVRO`, `JSON`, `ION` ou `TEXTFILE`. Pour les tables Iceberg, les formats autorisés sont `ORC`, `PARQUET` et `AVRO`. En cas d'omission, `PARQUET` est utilisé par défaut. Le nom de ce paramètre, `format`, doit être répertorié en minuscules, faute de quoi votre requête CTAS échoue.   
Exemple :  

```
WITH (format = 'PARQUET')
```  
 `bucketed_by = ARRAY[ column_name[,…], bucket_count = [int] ]`   
Cette propriété ne s'applique pas aux tables Iceberg. Pour les tables Iceberg, utilisez le partitionnement avec la transformation des compartiments.
Tableau de compartiments pour la mise en compartiments des données. En cas d'omission, Athena ne met pas vos données en compartiments dans cette requête.  
 `bucket_count = [int]`   
Cette propriété ne s'applique pas aux tables Iceberg. Pour les tables Iceberg, utilisez le partitionnement avec la transformation des compartiments.
Nombre de compartiments pour la mise en compartiments de vos données. En cas d'omission, Athena ne met pas vos données en compartiments. Exemple :  

```
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 
  * 
FROM 
  {{table_name}}
```  
 `partitioned_by = ARRAY[ col_name[,…] ]`   
Cette propriété ne s'applique pas aux tables Iceberg. Pour utiliser les transformations de partition pour les tables Iceberg, utilisez la propriété `partitioning` décrite plus loin dans cette rubrique.
Facultatif. Tableau composé de colonnes à l'aide duquel la table CTAS est partitionnée. Vérifiez que les noms des colonnes partitionnées sont répertoriés à la fin de la liste des colonnes dans l'instruction `SELECT`.   
 `partitioning = ARRAY[partition_transform, ...]`   
Facultatif. Spécifie le partitionnement de la table Iceberg à créer. Iceberg prend en charge une grande variété de transformations et d'évolutions de partitions. Les transformations de partition sont résumées dans le tableau suivant.    
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/create-table-as.html)
Exemple :  

```
 WITH (partitioning = ARRAY['month(order_date)', 
                            'bucket(account_number, 10)', 
                            'country']))
```  
 `optimize_rewrite_min_data_file_size_bytes = [long]`   
Facultatif. Configuration spécifique à l'optimisation des données. Les fichiers inférieurs à la valeur spécifiée sont inclus pour l'optimisation. La valeur par défaut est de 0,75 fois la valeur de `write_target_data_file_size_bytes`. Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [Optimisation des tables Iceberg](querying-iceberg-data-optimization.md).  
Exemple :  

```
WITH (optimize_rewrite_min_data_file_size_bytes = 402653184)
```  
 `optimize_rewrite_max_data_file_size_bytes = [long]`   
Facultatif. Configuration spécifique à l'optimisation des données. Les fichiers supérieurs à la valeur spécifiée sont inclus pour l'optimisation. La valeur par défaut est de 1,8 fois la valeur de `write_target_data_file_size_bytes`. Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [Optimisation des tables Iceberg](querying-iceberg-data-optimization.md).  
Exemple :  

```
WITH (optimize_rewrite_max_data_file_size_bytes = 966367641)
```  
 `optimize_rewrite_data_file_threshold = [int]`   
Facultatif. Configuration spécifique à l'optimisation des données. S'il y a moins de fichiers de données nécessitant une optimisation que le seuil donné, les fichiers ne sont pas réécrits. Cela permet d'accumuler un plus grand nombre de fichiers de données afin de produire des fichiers plus proches de la taille cible et de sauter les calculs inutiles afin de réduire les coûts. La valeur par défaut est 5. Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [Optimisation des tables Iceberg](querying-iceberg-data-optimization.md).  
Exemple :  

```
WITH (optimize_rewrite_data_file_threshold = 5)
```  
 `optimize_rewrite_delete_file_threshold = [int]`   
Facultatif. Configuration spécifique à l'optimisation des données. S'il y a moins de fichiers de suppression associés à un fichier de données que le seuil, le fichier de données n'est pas réécrit. Cela permet d'accumuler un plus grand nombre de fichiers de suppression pour chaque fichier de données afin de réduire les coûts. La valeur par défaut est 2. Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [Optimisation des tables Iceberg](querying-iceberg-data-optimization.md).  
Exemple :  

```
WITH (optimize_rewrite_delete_file_threshold = 2)
```  
 `vacuum_min_snapshots_to_keep = [int]`   
Facultatif. Configuration spécifique à Vacuum. Le nombre minimum d'instantanés les plus récents à retenir. La valeur par défaut est 1. Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [VACUUM](vacuum-statement.md).  
La propriété `vacuum_min_snapshots_to_keep` nécessite la version 3 du moteur Athena. 
Exemple :  

```
WITH (vacuum_min_snapshots_to_keep = 1)
```  
 `vacuum_max_snapshot_age_seconds = [long]`   
Facultatif. Configuration spécifique à Vacuum. Période en secondes qui représente l'âge des instantanés à retenir. La valeur par défaut est de 432 000 (5 jours). Cette propriété ne s'applique qu'aux tables Iceberg. Pour de plus amples informations, veuillez consulter [VACUUM](vacuum-statement.md).  
La propriété `vacuum_max_snapshot_age_seconds` nécessite la version 3 du moteur Athena. 
Exemple :  

```
WITH (vacuum_max_snapshot_age_seconds = 432000)
```  
 `write_compression = [compression_format]`   
Type de compression à utiliser pour n'importe quel format de stockage permettant de spécifier la compression. La valeur `compression_format` spécifie la compression à utiliser lorsque les données sont écrites dans la table. Vous pouvez spécifier une compression pour les formats de fichiers `TEXTFILE`, `JSON`, `PARQUET` et `ORC`.   
Par exemple, si la propriété `format` spécifie `PARQUET` comme format de stockage, la valeur de `write_compression` spécifie le format de compression pour Parquet. Dans ce cas, spécifier une valeur pour `write_compression` revient à spécifier une valeur pour `parquet_compression`.   
Par exemple, si la propriété `format` spécifie `ORC` comme format de stockage, la valeur de `write_compression` spécifie le format de compression pour ORC. Dans ce cas, spécifier une valeur pour `write_compression` revient à spécifier une valeur pour `orc_compression`.   
Il n'est pas possible de spécifier plusieurs propriétés de table de format de compression dans la même requête CTAS. Par exemple, vous ne pouvez pas spécifier les `write_compression` et `parquet_compression` simultanément dans la même requête. Il en va de même pour `write_compression` et `orc_compression`. Pour plus d'informations sur les formats de compression pris en charge par chaque format de fichier, consultez [Utilisation de la compression dans Athena](compression-formats.md).  
 `orc_compression = [compression_format]`   
Type de compression à utiliser pour le format de fichier `ORC` lorsque les données `ORC` sont écrites dans la table. Par exemple, `WITH (orc_compression = 'ZLIB')`. Les morceaux du fichier `ORC` (à l'exception du fichier `ORC` Postscript) sont compressés en utilisant la compression que vous avez spécifiée. En cas d'omission, la compression ZLIB est utilisée par défaut pour `ORC`.  
Pour des raisons de cohérence, nous vous recommandons d'utiliser la propriété `write_compression` au lieu de `orc_compression`. Utilisez la propriété `format` pour spécifier le format de stockage comme`ORC`, puis utilisez la propriété `write_compression` pour spécifier le format de compression que `ORC` utilisera.   
 `parquet_compression = [compression_format]`   
Type de compression à utiliser pour le format de fichier Parquet lorsque les données Parquet sont écrites dans la table. Par exemple, `WITH (parquet_compression = 'SNAPPY')`. Cette compression est appliquée aux blocs de colonnes dans les fichiers Parquet. En cas d'omission, la compression GZIP est utilisée par défaut pour Parquet.  
Pour des raisons de cohérence, nous vous recommandons d'utiliser la propriété `write_compression` au lieu de `parquet_compression`. Utilisez la propriété `format` pour spécifier le format de stockage comme`PARQUET`, puis utilisez la propriété `write_compression` pour spécifier le format de compression que `PARQUET` utilisera.   
 `compression_level = [compression_level]`   
Le niveau de compression à utiliser. Cette propriété s’applique uniquement à la compression ZSTD. Les valeurs possibles sont comprises entre 1 et 22. La valeur par défaut est 3. Pour plus d’informations, consultez [Utilisation des niveaux de compression ZSTD](compression-support-zstd-levels.md).

## Exemples
<a name="ctas-table-examples"></a>

Pour obtenir des exemples de requêtes CTAS, consultez les ressources suivantes.
+  [Exemples de requêtes CTAS](ctas-examples.md) 
+  [Utilisation de CTAS et INSERT INTO pour les opérations ETL et l’analyse des données](ctas-insert-into-etl.md) 
+  [Utilisation des instructions CTAS avec Amazon Athena pour réduire les coûts et améliorer les performances](https://aws.amazon.com/blogs/big-data/using-ctas-statements-with-amazon-athena-to-reduce-cost-and-improve-performance/) 
+  [Utilisation de CTAS et INSERT INTO pour contourner la limite de 100 partitions](ctas-insert-into.md) 