UNLOADConcepts - Amazon Timestream

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.

UNLOADConcepts

Syntaxe

UNLOAD (SELECT statement) TO 's3://bucket-name/folder' WITH ( option = expression [, ...] )

où se option trouve

{ partitioned_by = ARRAY[ col_name[,…] ] | format = [ '{ CSV | PARQUET }' ] | compression = [ '{ GZIP | NONE }' ] | encryption = [ '{ SSE_KMS | SSE_S3 }' ] | kms_key = '<string>' | field_delimiter ='<character>' | escaped_by = '<character>' | include_header = ['{true, false}'] | max_file_size = '<value>' | }

Paramètres

SELECTdéclaration

L'instruction de requête utilisée pour sélectionner et récupérer les données d'un ou de plusieurs Timestream pour les LiveAnalytics tables.

(SELECT column 1, column 2, column 3 from database.table where measure_name = "ABC" and timestamp between ago (1d) and now() )
Clause TO
TO 's3://bucket-name/folder'

or

TO 's3://access-point-alias/folder'

La TO clause contenue dans l'UNLOADinstruction indique la destination de sortie des résultats de la requête. Vous devez fournir le chemin complet, y compris le nom du compartiment Amazon S3 ou Amazon S3 access-point-alias avec l'emplacement du dossier sur Amazon S3 où Timestream for LiveAnalytics écrit les objets du fichier de sortie. Le compartiment S3 doit appartenir au même compte et se trouver dans la même région. Outre le jeu de résultats de la requête, Timestream for LiveAnalytics écrit le manifeste et les fichiers de métadonnées dans le dossier de destination spécifié.

PARTITIONEDClause _BY
partitioned_by = ARRAY [col_name[,…] , (default: none)

La partitioned_by clause est utilisée dans les requêtes pour regrouper et analyser les données à un niveau granulaire. Lorsque vous exportez les résultats de votre requête vers le compartiment S3, vous pouvez choisir de partitionner les données en fonction d'une ou de plusieurs colonnes de la requête de sélection. Lors du partitionnement des données, les données exportées sont divisées en sous-ensembles en fonction de la colonne de partition et chaque sous-ensemble est stocké dans un dossier distinct. Dans le dossier de résultats qui contient vos données exportées, un sous-dossier folder/results/partition column = partition value/ est automatiquement créé. Notez toutefois que les colonnes partitionnées ne sont pas incluses dans le fichier de sortie.

partitioned_byn'est pas une clause obligatoire dans la syntaxe. Si vous choisissez d'exporter les données sans partitionnement, vous pouvez exclure la clause dans la syntaxe.

En supposant que vous surveillez les données du flux de clics de votre site Web et que vous disposiez de 5 canaux de trafic directSocial Media, à savoirOrganic Search,Other, etReferral. Lorsque vous exportez les données, vous pouvez choisir de les partitionner à l'aide de la colonneChannel. Dans votre dossier de donnéess3://bucketname/results, vous aurez cinq dossiers portant chacun leur nom de chaîne respectif. Par exemple, s3://bucketname/results/channel=Social Media/. dans ce dossier, vous trouverez les données de tous les clients qui ont accédé à votre site Web via le Social Media canal. De même, vous aurez d'autres dossiers pour les chaînes restantes.

Données exportées partitionnées par colonne de canal

Folder structure showing channels: Direct, Organic search, Other, Referral, and Social media.
FORMAT
format = [ '{ CSV | PARQUET }' , default: CSV

Les mots clés permettant de spécifier le format des résultats de requête écrits dans votre compartiment S3. Vous pouvez exporter les données soit sous forme de valeur séparée par des virgules (CSV) en utilisant une virgule (,) comme séparateur par défaut, soit au format Apache Parquet, un format de stockage en colonnes ouvert efficace pour les analyses.

COMPRESSION
compression = [ '{ GZIP | NONE }' ], default: GZIP

Vous pouvez compresser les données exportées à l'aide d'un algorithme de compression GZIP ou les décompresser en spécifiant l'NONEoption.

ENCRYPTION
encryption = [ '{ SSE_KMS | SSE_S3 }' ], default: SSE_S3

Les fichiers de sortie sur Amazon S3 sont chiffrés à l'aide de l'option de chiffrement que vous avez sélectionnée. Outre vos données, le manifeste et les fichiers de métadonnées sont également chiffrés en fonction de l'option de chiffrement que vous avez sélectionnée. Nous prenons actuellement en charge le KMS chiffrement SSE _S3 et SSE _. SSE_S3 est un chiffrement côté serveur, Amazon S3 chiffrant les données à l'aide d'un cryptage standard de chiffrement avancé () 256 bits. AES SSE_ KMS est un chiffrement côté serveur qui permet de chiffrer les données à l'aide de clés gérées par le client.

KMS_KEY
kms_key = '<string>'

KMSLa clé est une clé définie par le client pour chiffrer les résultats de requête exportés. KMSLa clé est gérée de manière sécurisée par le service de gestion des AWS clés (AWS KMS) et utilisée pour chiffrer les fichiers de données sur Amazon S3.

FIELD_DELIMITER
field_delimiter ='<character>' , default: (,)

Lors de l'exportation des données au CSV format, ce champ spécifie un seul ASCII caractère utilisé pour séparer les champs du fichier de sortie, tel qu'un tube (|), une virgule (,) ou un onglet (/t). Le séparateur par défaut pour les CSV fichiers est une virgule. Si une valeur de vos données contient le délimiteur choisi, celui-ci sera mis entre guillemets. Par exemple, si la valeur de vos données contientTime,stream, elle sera indiquée entre guillemets comme "Time,stream" dans les données exportées. Les guillemets utilisés par Timestream LiveAnalytics sont des guillemets doubles («).

Évitez de spécifier le caractère de renvoi (ASCII13, hexadécimal0D, texte « \ r ») ou le caractère de saut de ligne (ASCII10, hexadécimal 0A, texte «\n») comme tel FIELD_DELIMITER si vous souhaitez inclure des en-têtes dans leCSV, car cela empêcherait de nombreux analyseurs de pouvoir analyser correctement les en-têtes dans la sortie résultante. CSV

ESCAPED_PAR
escaped_by = '<character>', default: (\)

Lors de l'exportation des données au CSV format, ce champ indique le caractère qui doit être traité comme un caractère d'échappement dans le fichier de données écrit dans le compartiment S3. L'évasion se produit dans les scénarios suivants :

  1. Si la valeur elle-même contient le caractère guillemet («), elle sera échappée à l'aide d'un caractère d'échappement. Par exemple, si la valeur estTime"stream, où (\) est le caractère d'échappement configuré, il sera échappé en tant queTime\"stream.

  2. Si la valeur contient le caractère d'échappement configuré, il sera échappé. Par exemple, si la valeur estTime\stream, elle sera ignorée en tant queTime\\stream.

Note

Si la sortie exportée contient des types de données complexes tels que des tableaux, des lignes ou des séries temporelles, elle sera sérialisée sous forme de chaîne. JSON Voici un exemple.

Type de données Valeur réelle Comment la valeur est échappée au CSV format [JSONchaîne sérialisée]

Tableau

[ 23,24,25 ]

"[23,24,25]"

Rangée

( x=23.0, y=hello )

"{\"x\":23.0,\"y\":\"hello\"}"

Chronologique

[ ( time=1970-01-01 00:00:00.000000010, value=100.0 ),( time=1970-01-01 00:00:00.000000012, value=120.0 ) ]

"[{\"time\":\"1970-01-01 00:00:00.000000010Z\",\"value\":100.0},{\"time\":\"1970-01-01 00:00:00.000000012Z\",\"value\":120.0}]"

INCLUDE_HEADER
include_header = 'true' , default: 'false'

Lorsque vous exportez les données au CSV format, ce champ vous permet d'inclure les noms de colonnes dans la première ligne des fichiers de CSV données exportés.

Les valeurs acceptées sont « vrai » et « faux » et la valeur par défaut est « faux ». Les options de transformation de texte telles que escaped_by et field_delimiter s'appliquent également aux en-têtes.

Note

Lorsque vous incluez des en-têtes, il est important de ne pas sélectionner un caractère de renvoi (ASCII13, hexadécimal 0D, texte « \ r ») ou un caractère de saut de ligne (ASCII10, hexadécimal 0A, texte «\n») comme caractèreFIELD_DELIMITER, car cela empêcherait de nombreux analyseurs de pouvoir analyser correctement les en-têtes dans le résultat obtenu. CSV

MAX_FILE_SIZE
max_file_size = 'X[MB|GB]' , default: '78GB'

Ce champ indique la taille maximale des fichiers créés par l'UNLOADinstruction dans Amazon S3. L'UNLOADinstruction peut créer plusieurs fichiers, mais la taille maximale de chaque fichier écrit sur Amazon S3 sera approximativement celle spécifiée dans ce champ.

La valeur du champ doit être comprise entre 16 Mo et 78 Go inclus. Vous pouvez le spécifier en nombre entier tel que12GB, ou en décimaux tels que 0.5GB ou. 24.7MB La valeur par défaut est de 78 Go.

La taille réelle du fichier est approximative au moment de l'écriture du fichier, de sorte que la taille maximale réelle peut ne pas être exactement égale au nombre que vous spécifiez.

Qu'est-ce qui est écrit dans mon compartiment S3 ?

Pour chaque UNLOAD requête exécutée avec succès, Timestream for LiveAnalytics écrit les résultats de la requête, le fichier de métadonnées et le fichier manifeste dans le compartiment S3. Si vous avez partitionné les données, tous les dossiers de partition se trouvent dans le dossier des résultats. Le fichier manifeste contient la liste des fichiers écrits par la UNLOAD commande. Le fichier de métadonnées contient des informations qui décrivent les caractéristiques, les propriétés et les attributs des données écrites.

Quel est le nom du fichier exporté ?

Le nom du fichier exporté contient deux composants, le premier est le QueryID et le second est un identifiant unique.

CSVfichiers

S3://bucket_name/results/<queryid>_<UUID>.csv S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.csv

CSVFichier compressé

S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.gz

Lime à parquet

S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.parquet

Fichiers de métadonnées et de manifeste

S3://bucket_name/<queryid>_<UUID>_manifest.json S3://bucket_name/<queryid>_<UUID>_metadata.json

Comme les données au CSV format sont stockées au niveau du fichier, lorsque vous compressez les données lors de l'exportation vers S3, le fichier porte l'extension « .gz ». Cependant, les données de Parquet sont compressées au niveau des colonnes. Ainsi, même lorsque vous compressez les données lors de l'exportation, le fichier portera toujours l'extension .parquet.

Quelles sont les informations contenues dans chaque fichier ?

Fichier manifeste

Le fichier manifeste fournit des informations sur la liste des fichiers exportés lors de l'UNLOADexécution. Le fichier manifeste est disponible dans le compartiment S3 fourni sous le nom de fichier :s3://<bucket_name>/<queryid>_<UUID>_manifest.json. Le fichier manifeste contiendra l'URL des fichiers du dossier de résultats, le nombre d'enregistrements et la taille des fichiers respectifs, ainsi que les métadonnées de la requête (c'est-à-dire le nombre total d'octets et le nombre total de lignes exportés vers S3 pour la requête).

{ "result_files": [ { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 32295, "row_count": 10 } }, { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 62295, "row_count": 20 } }, ], "query_metadata": { "content_length_in_bytes": 94590, "total_row_count": 30, "result_format": "CSV", "result_version": "Amazon Timestream version 1.0.0" }, "author": { "name": "Amazon Timestream", "manifest_file_version": "1.0" } }

Metadonnées

Le fichier de métadonnées fournit des informations supplémentaires sur l'ensemble de données, telles que le nom de colonne, le type de colonne et le schéma. <queryid>Le fichier de métadonnées est disponible dans le compartiment S3 fourni sous le nom de fichier : S3 : //bucket_name/ _< >_metadata.json UUID

Voici un exemple de fichier de métadonnées.

{ "ColumnInfo": [ { "Name": "hostname", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "region", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "measure_name", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "cpu_utilization", "Type": { "TimeSeriesMeasureValueColumnInfo": { "Type": { "ScalarType": "DOUBLE" } } } } ], "Author": { "Name": "Amazon Timestream", "MetadataFileVersion": "1.0" } }

Les informations de colonne partagées dans le fichier de métadonnées ont la même structure que celle ColumnInfo envoyée dans API la réponse aux SELECT requêtes.

Résultats

Le dossier des résultats contient vos données exportées au format Apache Parquet ou CSV au format Apache.

Exemple

Lorsque vous soumettez une UNLOAD requête comme ci-dessous via QueryAPI,

UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://my_timestream_unloads/withoutpartition/' WITH ( format='CSV', compression='GZIP')

UNLOADla réponse à la requête comportera 1 ligne* 3 colonnes. Ces 3 colonnes sont les suivantes :

  • lignes de type BIGINT : indique le nombre de lignes exportées

  • metadataFile de type VARCHAR - qui est le S3 URI du fichier de métadonnées exporté

  • manifestFile de type VARCHAR - qui est le S3 URI du fichier manifeste exporté

Vous obtiendrez la réponse suivante de Query API :

{ "Rows": [ { "Data": [ { "ScalarValue": "20" # No of rows in output across all files }, { "ScalarValue": "s3://my_timestream_unloads/withoutpartition/AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY_<UUID>_metadata.json" #Metadata file }, { "ScalarValue": "s3://my_timestream_unloads/withoutpartition/AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY_<UUID>_manifest.json" #Manifest file } ] } ], "ColumnInfo": [ { "Name": "rows", "Type": { "ScalarType": "BIGINT" } }, { "Name": "metadataFile", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "manifestFile", "Type": { "ScalarType": "VARCHAR" } } ], "QueryId": "AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY", "QueryStatus": { "ProgressPercentage": 100.0, "CumulativeBytesScanned": 1000, "CumulativeBytesMetered": 10000000 } }

Types de données

La UNLOAD déclaration prend en charge tous les types de données du langage de requête LiveAnalytics de Timestream for décrit dans Types de données pris en charge sauf time et. unknown