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.
UNLOAD
Écrit les résultats de requête à partir d'une instruction SELECT
au format de données spécifié. Les formats pris en charge UNLOAD
incluent Apache ParquetORC, Apache Avro etJSON. CSVest le seul format de sortie pris en charge par la SELECT
commande Athena, mais vous pouvez utiliser cette UNLOAD
commande, qui prend en charge différents formats de sortie, pour inclure votre SELECT
requête et réécrire sa sortie dans l'un des formats pris en charge. UNLOAD
Bien que vous puissiez utiliser l'instruction CREATE TABLE AS
(CTAS) pour générer des données dans des formats autres queCSV, CTAS les instructions nécessitent la création d'une table dans Athena. L'UNLOAD
instruction est utile lorsque vous souhaitez afficher les résultats d'une SELECT
requête dans un CSV format non formaté mais que vous ne souhaitez pas obtenir la table associée. Par exemple, une application en aval peut exiger que les résultats d'une SELECT
requête soient au JSON format, et Parquet ORC peut offrir un avantage en termes de performances par rapport à une application CSV si vous avez l'intention d'utiliser les résultats de la SELECT
requête pour une analyse supplémentaire.
Considérations et restrictions
Lorsque vous utilisez l'instruction UNLOAD
dans Athena, gardez à l'esprit les points suivants :
-
Aucun ordre global des fichiers – Les résultats
UNLOAD
sont écrits dans plusieurs fichiers en parallèle. Si la requêteSELECT
de l'instructionUNLOAD
spécifie un ordre de tri, le contenu de chaque fichier est trié, mais les fichiers ne sont pas triés les uns par rapport aux autres. -
Données orphelines non supprimées – En cas d'échec, Athena ne tente pas de supprimer les données orphelines. Ce comportement est identique à celui des
INSERT INTO
instructions for CTAS et. -
Partitions maximales – Le nombre maximal de partitions pouvant être utilisées avec
UNLOAD
est 100. -
Fichiers manifestes et métadonnées – Athena génère un fichier de métadonnées et un fichier manifeste de données pour chaque requête
UNLOAD
. Le manifeste suit les fichiers écrits par la requête. Les deux fichiers sont enregistrés dans votre emplacement de résultat de requête Athena dans Simple Storage Service (Amazon S3). Pour de plus amples informations, veuillez consulter Identifier les fichiers de sortie des requêtes. -
Chiffrement – Les fichiers de sortie
UNLOAD
sont chiffrés selon la configuration de chiffrement utilisée pour Simple Storage Service (Amazon S3). Pour configurer la configuration de chiffrement afin de chiffrer votreUNLOAD
résultat, vous pouvez utiliser le EncryptionConfiguration API. -
Instructions préparées –
UNLOAD
peut être utilisé avec des instructions préparées. Pour plus d'informations sur les instructions préparées dans Athena, voir Utiliser des requêtes paramétrées. -
Quotas de service :
UNLOAD
utilise des quotas de DML requêtes. Pour plus d'informations sur les quotas, voir Service Quotas. -
Propriétaire du compartiment attendu – Le paramètre propriétaire du compartiment attendu ne s'applique pas à l'emplacement de destination de Simple Storage Service (Amazon S3) spécifié dans la requête
UNLOAD
. Le paramètre propriétaire du compartiment attendu s'applique uniquement à l'emplacement de sortie de 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.
Syntaxe
L'instruction UNLOAD
utilise la syntaxe suivante.
UNLOAD (SELECT
col_name
[, ...] FROMold_table
) TO 's3://amzn-s3-demo-bucket/my_folder
/' WITH (property_name
= 'expression
' [, ...] )
Sauf lors de l'écriture sur des partitions, la TO
destination doit spécifier un emplacement dans Amazon S3 qui ne contient aucune donnée. Avant que la requête UNLOAD
n'écrive à l'emplacement spécifié, elle vérifie que l'emplacement du compartiment est vide. Comme UNLOAD
n'écrit pas de données dans l'emplacement spécifié si celui-ci contient déjà des données, UNLOAD
n'écrase pas les données existantes. Pour réutiliser un emplacement de compartiment comme destination pour UNLOAD
, supprimez les données de l'emplacement de compartiment, puis exécutez à nouveau la requête.
Notez qu'en cas d'UNLOAD
écriture sur des partitions, ce comportement est différent. Si vous exécutez plusieurs fois la même UNLOAD
requête avec la même SELECT
instruction, le même TO
emplacement et les mêmes partitions, chaque UNLOAD
requête décharge les données dans Amazon S3 à l'emplacement et aux partitions spécifiés.
Paramètres
Valeurs possibles pour property_name
sont les suivants.
- format = '
file_format
' -
Obligatoire. Spécifie le format de fichier de sortie. Valeurs possibles pour
file_format
sontORC
,PARQUET
AVRO
,JSON
, ouTEXTFILE
. - compression = '
compression_format
' -
Facultatif. Cette option est spécifique aux formats ORC et Parquet. PourORC, la valeur par défaut est
zlib
, et pour Parquet, la valeur par défaut estgzip
. Pour plus d'informations sur les formats de compression pris en charge, consultez Prise en charge de la compression Athena.Note
Cette option ne s'applique pas au format
AVRO
. Athena utilisegzip
pour les formatsJSON
etTEXTFILE
. - niveau_de compression =
compression_level
-
Facultatif. Le niveau de compression à utiliser pour la ZSTD compression. Cette propriété s'applique uniquement à la ZSTD compression. Pour de plus amples informations, veuillez consulter Utiliser les niveaux ZSTD de compression.
- field_delimiter = '
delimiter
' -
Facultatif. Spécifie un délimiteur de champ à caractère unique pour les fichiers au CSV format texteTSV, et autres. L'exemple suivant spécifie une virgule comme délimiteur.
WITH (field_delimiter = ',')
Actuellement, les délimiteurs de champ à plusieurs caractères ne sont pas pris en charge. Si vous ne spécifiez pas de délimiteur de champ, le caractère octal
\001
(^A) est utilisé. - partitionné_par = [ARRAY
col_name
[,...] ] -
Facultatif. Tableau composé de colonnes à l'aide duquel la sortie est partitionnée.
Note
Dans votre instruction
SELECT
, veillez à ce que les noms des colonnes partitionnées figurent en dernier dans votre liste de colonnes.
Exemples
L'exemple suivant écrit le résultat d'une SELECT
requête sur le site Amazon S3 s3://amzn-s3-demo-bucket/unload_test_1/
en utilisant le JSON format.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/unload_test_1/' WITH (format = 'JSON')
L'exemple suivant écrit la sortie d'une requête SELECT
au format Parquet en utilisant la compression Snappy.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET',compression = 'SNAPPY')
L'exemple suivant écrit quatre colonnes au format texte, la sortie étant divisée par la dernière colonne.
UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://amzn-s3-demo-bucket/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
L'exemple suivant décharge les résultats de la requête à l'emplacement spécifié en utilisant le format de fichier Parquet, la ZSTD compression et le niveau ZSTD de compression 4.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)