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.
Considérations et limites relatives aux CTAS requêtes
Les sections suivantes décrivent les considérations et les limites à prendre en compte lorsque vous utilisez des requêtes CREATE TABLE AS SELECT
(CTAS) dans Athena.
Apprenez la syntaxe des CTAS requêtes
La syntaxe de la CTAS requête est différente de celle CREATE [EXTERNAL] TABLE
utilisée pour créer des tables. Consultez CREATE TABLE AS.
La différence entre les vues et les CTAS requêtes
CTASles requêtes écrivent de nouvelles données à un emplacement spécifié dans Amazon S3. Les vues n'écrivent aucune donnée.
Spécifiez un emplacement pour les résultats de votre CTAS requête
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 à cet emplacement s3://amzn-s3-demo-bucket/tables/
. Pour afficher l'emplacement des résultats de la requête spécifié pour le groupe de travail, affichez les détails du groupe de travail.<query-id>
/
Si votre groupe de travail ne remplace pas l'emplacement des résultats de la requête, vous pouvez utiliser la syntaxe WITH (external_location ='s3://amzn-s3-demo-bucket/')
de votre CTAS requête pour spécifier où les résultats de votre CTAS requête sont stockés.
Note
La propriété external_location
doit spécifier un emplacement vide. Une CTAS requête vérifie que l'emplacement du chemin (préfixe) dans le compartiment est vide et ne remplace jamais les données si l'emplacement contient déjà des données. Pour utiliser à nouveau le même emplacement, supprimez les données dans l'emplacement du préfixe de clé dans le compartiment.
Si vous omettez la syntaxe external_location
et que vous n'utilisez pas le paramètre de groupe de travail, Athena utilise votre paramètre côté client pour l'emplacement des résultats de la requête et crée votre table à cet emplacement s3://amzn-s3-demo-bucket/
. <Unsaved-or-query-name>
/<year>/<month/<date>
/tables/<query-id>
/
Localiser les fichiers orphelins
Si une instruction CTAS
ou INSERT INTO
échoue, il est possible que les données orphelines soient laissées dans l'emplacement des données. Étant donné qu'Athena ne supprime pas, dans certains cas, les données ou les données partielles de votre compartiment, vous pourrez être en mesure de lire ces données partielles dans les requêtes suivantes. Pour localiser les fichiers orphelins en vue d'une inspection ou d'une suppression, vous pouvez utiliser le fichier manifeste de données fourni par Athena pour suivre la liste des fichiers à écrire. Pour plus d'informations, reportez-vous Identifier les fichiers de sortie des requêtes aux sections et DataManifestLocation.
N'oubliez pas que ORDER les clauses BY sont ignorées
Dans une CTAS requête, Athena ignore les ORDER BY
clauses contenues dans la SELECT
partie de la requête.
Selon la SQL spécification (ISO9075 Partie 2), l'ordre des lignes d'une table spécifiée par une expression de requête est garanti uniquement pour l'expression de requête qui contient immédiatement la ORDER BY
clause. Les tables dans SQL sont dans tous les cas intrinsèquement désordonnées, et l'ORDER BY
implémentation des clauses de sous-requête entraînerait à la fois une baisse des performances de la requête et n'entraînerait pas une sortie ordonnée. Ainsi, dans les CTAS requêtes Athena, rien ne garantit que l'ordre spécifié par la ORDER
BY
clause sera préservé lors de l'écriture des données.
Choisissez un format pour stocker les résultats de votre requête
Vous pouvez enregistrer CTAS les résultats dans PARQUET
ORC
,AVRO
,JSON
, etTEXTFILE
. Les séparateurs à plusieurs caractères ne sont pas pris en charge pour ce format. CTAS TEXTFILE
Si vous ne spécifiez aucun format de stockage des données, les résultats des CTAS requêtes sont stockés dans Parquet par défaut.
CTASles requêtes ne nécessitent pas de spécifier a SerDe pour interpréter les transformations de format. Consultez Example: Writing query results to a different format.
Tenez compte des formats de compression
GZIP
la compression est utilisée pour les résultats des CTAS requêtes dans les TEXTFILE formats JSON et les formats. Pour Parquet, vous pouvez utiliser GZIP
ou SNAPPY
, la valeur par défaut étant GZIP
. CarORC, vous pouvez utiliserLZ4
,SNAPPY
, ou ZLIB
ZSTD
, et la valeur par défaut estZLIB
. Pour CTAS des exemples spécifiant la compression, voirExample: Specifying data storage and compression formats. Pour plus d’informations sur la compression dans Athena, consultez Utiliser la compression dans Athena.
Partitionnez et regroupez vos résultats
Vous pouvez partitionner et regrouper les données des résultats d'une CTAS requête. Pour spécifier les propriétés de la table de destination, incluez les prédicats de partitionnement et de compartimentage à la fin de la clause. WITH
Pour plus d’informations, consultez Utiliser le partitionnement et le cloisonnement et Example: Creating bucketed and partitioned tables.
Lorsque vous créez CTAS une table partitionnée, Athena a une limite d'écriture de 100 partitions. Pour plus d'informations sur le contournement de la limitation de 100 partitions, consultez Utilisez CTAS et INSERT INTO pour contourner la limite de 100 partitions.
Chiffrez vos résultats
Vous pouvez chiffrer les résultats des CTAS requêtes dans Amazon S3, de la même manière que vous cryptez les autres résultats de requête dans Athena. Pour de plus amples informations, veuillez consulter Chiffrez les résultats des requêtes Athena stockés dans Amazon S3.
Le paramètre de propriétaire du compartiment attendu ne s'applique pas à CTAS
Pour les CTAS instructions, le paramètre du propriétaire du compartiment attendu ne s'applique pas à l'emplacement de la table de destination dans 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écifier l'emplacement des résultats d'une requête à l'aide de la console Athena.
Les types de données des colonnes sont préservés
Les types de données de colonne d'une CTAS requête sont les mêmes que ceux spécifiés pour la requête d'origine.