Considérations et limites relatives aux CTAS requêtes - Amazon Athena

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/<query-id>/. 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.

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 BYimplé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 PARQUETORC,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

GZIPla 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 ZLIBZSTD, 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.