

Pour des fonctionnalités similaires à celles d'Amazon Timestream pour, pensez à Amazon Timestream LiveAnalytics pour InfluxDB. Il permet une ingestion simplifiée des données et des temps de réponse aux requêtes à un chiffre en millisecondes pour des analyses en temps réel. Pour en savoir plus, [cliquez ici](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

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.

# Utilisation de UNLOAD pour exporter les résultats des requêtes vers S3 depuis Timestream pour LiveAnalytics
<a name="export-unload"></a>

Amazon Timestream vous permet actuellement LiveAnalytics d'exporter les résultats de vos requêtes vers Amazon S3 de manière rentable et sécurisée à l'aide de l'instruction. `UNLOAD` À l'aide de `UNLOAD` cette instruction, vous pouvez désormais exporter des données de séries chronologiques vers des compartiments S3 sélectionnés au format Apache Parquet ou CSV (Comma Separated Values), ce qui permet de stocker, de combiner et d'analyser vos données de séries chronologiques avec d'autres services en toute flexibilité. La `UNLOAD` déclaration vous permet d'exporter les données de manière compressée, ce qui réduit les données transférées et l'espace de stockage requis. `UNLOAD`prend également en charge le partitionnement en fonction d'attributs sélectionnés lors de l'exportation des données, ce qui améliore les performances et réduit le temps de traitement des services en aval accédant aux données. En outre, vous pouvez utiliser les clés gérées Amazon S3 (SSE-S3) ou les clés gérées par le service de gestion des AWS clés (AWS KMS) (SSE-KMS) pour chiffrer vos données exportées.

## Avantages de UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-benefits"></a>

Les principaux avantages de l'utilisation de `UNLOAD` cette déclaration sont les suivants.
+ **Facilité opérationnelle** : grâce à `UNLOAD` cette déclaration, vous pouvez exporter des gigaoctets de données en une seule requête au format Apache Parquet ou CSV, ce qui vous permet de sélectionner le format le mieux adapté à vos besoins de traitement en aval et de faciliter la création de lacs de données.
+ **Sécurisé et rentable** : `UNLOAD` Statement permet d'exporter vos données vers un compartiment S3 de manière compressée et de chiffrer (SSE-KMS ou SSE\$1S3) vos données à l'aide de clés gérées par le client, réduisant ainsi les coûts de stockage des données et les protégeant contre les accès non autorisés.
+ **Performance** — À l'aide de `UNLOAD` cette instruction, vous pouvez partitionner les données lors de l'exportation vers un compartiment S3. Le partitionnement des données permet aux services en aval de traiter les données en parallèle, réduisant ainsi leur temps de traitement. En outre, les services en aval ne peuvent traiter que les données dont ils ont besoin, ce qui réduit les ressources de traitement requises et donc les coûts associés.

## Cas d'utilisation de UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-use-cases"></a>

Vous pouvez utiliser l'`UNLOAD`instruction pour écrire des données dans votre compartiment S3 comme suit.
+ **Créez un entrepôt de données** : vous pouvez exporter des gigaoctets de résultats de requêtes dans un compartiment S3 et ajouter plus facilement des séries chronologiques dans votre lac de données. Vous pouvez utiliser des services tels qu'Amazon Athena et Amazon Redshift pour combiner les données de vos séries chronologiques avec d'autres données pertinentes afin d'obtenir des informations commerciales complexes. 
+ **Créez des pipelines de données d'intelligence artificielle et de machine learning** : `UNLOAD` cette déclaration vous permet de créer facilement des pipelines de données pour vos modèles d'apprentissage automatique qui accèdent aux données de séries chronologiques, ce qui facilite l'utilisation des données de séries chronologiques avec des services tels qu'Amazon SageMaker et Amazon EMR.
+ **Simplifier le traitement ETL** — L'exportation de données dans des compartiments S3 peut simplifier le processus d'exécution des opérations d'extraction, de transformation, de chargement (ETL) sur les données, ce qui vous permet d'utiliser facilement des outils ou des AWS services tiers tels que AWS Glue pour traiter et transformer les données.

# Concepts de DÉCHARGEMENT
<a name="export-unload-concepts"></a>

## Syntaxe
<a name="export-unload-concepts-syntax"></a>

```
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>'
 | }
```

## Parameters
<a name="export-unload-concepts-parameters"></a>

Déclaration SELECT  
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'`UNLOAD`instruction indique la destination de sortie des résultats de la requête. Vous devez fournir le chemin complet, y compris soit le nom du compartiment Amazon S3, soit 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é. 

Clause PARTITIONED\$1BY  

```
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_by`n'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.   

**Example**  
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 `direct``Social Media`, à savoir`Organic Search`,`Other`, et`Referral`. Lorsque vous exportez les données, vous pouvez choisir de les partitionner à l'aide de la colonne`Channel`. Dans votre dossier de données`s3://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.\]](http://docs.aws.amazon.com/fr_fr/timestream/latest/developerguide/images/unload-results.png)


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 de l'algorithme de compression GZIP ou les décompresser en spécifiant l'`NONE`option.

CHIFFREMENT  

```
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 chiffrement SSE\$1S3 et SSE\$1KMS. SSE\$1S3 est un chiffrement côté serveur, Amazon S3 chiffrant les données à l'aide d'un chiffrement AES (Advanced Encryption Standard) 256 bits. SSE\$1KMS 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\$1KEY  

```
kms_key = '<string>'
```
La clé KMS est une clé définie par le client pour chiffrer les résultats de requête exportés. La clé KMS 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.

DÉLIMITEUR DE CHAMP  

```
field_delimiter ='<character>' , default: (,)
```
Lors de l'exportation des données au format CSV, ce champ spécifie un seul caractère ASCII utilisé pour séparer les champs du fichier de sortie, tel qu'un tube (\$1), une virgule (,) ou un onglet (/t). Le délimiteur par défaut pour les fichiers CSV est un caractère de 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 contient`Time,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 (ASCII 13, hexadécimal`0D`, texte « \$1 r ») ou le caractère de saut de ligne (ASCII 10, hexadécimal 0A, texte «\$1n») `FIELD_DELIMITER` si vous souhaitez inclure des en-têtes dans le CSV, car cela empêcherait de nombreux analyseurs de les analyser correctement dans la sortie CSV résultante.

ÉVADÉ PAR  

```
escaped_by = '<character>', default: (\)
```
Lors de l'exportation des données au format CSV, 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 est`Time"stream`, où (\$1) est le caractère d'échappement configuré, il sera échappé en tant que`Time\"stream`. 

1. Si la valeur contient le caractère d'échappement configuré, il sera échappé. Par exemple, si la valeur est`Time\stream`, elle sera ignorée en tant que`Time\\stream`. 
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.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/timestream/latest/developerguide/export-unload-concepts.html)

INCLUDE\$1EN-TÊTE  

```
include_header = 'true' , default: 'false'
```
Lorsque vous exportez les données au format CSV, ce champ vous permet d'inclure les noms de colonnes dans la première ligne des fichiers de données CSV 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.  
Lorsque vous incluez des en-têtes, il est important de ne pas sélectionner un caractère de renvoi (ASCII 13, hexadécimal 0D, texte « \$1 r ») ou un caractère de saut de ligne (ASCII 10, hexadécimal 0A, texte «\$1n»)`FIELD_DELIMITER`, car cela empêcherait de nombreux analyseurs d'analyser correctement les en-têtes dans la sortie CSV résultante.

TAILLE MAXIMALE DU FICHIER  

```
max_file_size = 'X[MB|GB]' , default: '78GB'
```
Ce champ indique la taille maximale des fichiers créés par l'`UNLOAD`instruction dans Amazon S3. L'`UNLOAD`instruction 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 que`12GB`, 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 ?
<a name="export-unload-common-questions-what-is-written"></a>

Pour chaque requête UNLOAD 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 commande UNLOAD. 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é ?
<a name="export-unload-common-questions-what-is-filename"></a>

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

fichiers CSV

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

Fichier CSV 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 format CSV 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 ?
<a name="export-unload-common-questions-what-information"></a>

### Fichier manifeste
<a name="export-unload-common-questions-what-information-manifest"></a>

Le fichier manifeste fournit des informations sur la liste des fichiers exportés lors de l'exécution de UNLOAD. 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" 
  }
}
```

### Métadonnées
<a name="export-unload-common-questions-what-information-metadata"></a>

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><UUID>Le fichier de métadonnées est disponible dans le compartiment S3 fourni sous le nom de fichier : S3 : //bucket\$1name/ \$1 \$1metadata.json 

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 la réponse de l'API Query pour les `SELECT` requêtes. 

### Résultats
<a name="export-unload-common-questions-what-information-results"></a>

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

## Exemple
<a name="export-unload-example-short"></a>

Lorsque vous soumettez une `UNLOAD` requête comme ci-dessous via l'API Query,

```
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')
```

`UNLOAD`la réponse à la requête comportera 1 ligne\$1 3 colonnes. Ces 3 colonnes sont les suivantes :
+ lignes de type BIGINT - indiquant le nombre de lignes exportées
+ Fichier de métadonnées de type VARCHAR - qui est l'URI S3 du fichier de métadonnées exporté
+ ManifestFile de type VARCHAR - qui est l'URI S3 du fichier manifeste exporté

Vous obtiendrez la réponse suivante de l'API Query :

```
{
    "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
<a name="export-unload-data-types-explanation"></a>

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](supported-data-types.md) sauf `time` et. `unknown`

# Prérequis pour UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-prerequisites"></a>

Vous trouverez ci-dessous les conditions requises pour écrire des données dans S3 à l'aide `UNLOAD` de Timestream pour. LiveAnalytics
+ Vous devez être autorisé à lire les données du Timestream pour les LiveAnalytics tables à utiliser dans une `UNLOAD` commande.
+ Vous devez disposer d'un compartiment Amazon S3 dans la même AWS région que votre Timestream pour les LiveAnalytics ressources.
+ Pour le compartiment S3 sélectionné, assurez-vous que la [politique du compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) dispose également des autorisations permettant à Timestream d' LiveAnalytics exporter les données.
+ Les informations d'identification utilisées pour exécuter la `UNLOAD` requête doivent disposer des autorisations AWS Identity and Access Management (IAM) nécessaires pour LiveAnalytics permettre à Timestream d'écrire les données dans S3. Voici un exemple de politique :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "timestream:Select",
                "timestream:ListMeasures",
                "timestream:WriteRecords",
                "timestream:Unload"
            ],
            "Resource": "arn:aws:timestream:us-east-2:111122223333:database/database_name/table/table_name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketAcl",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::S3_Bucket_Created",
                "arn:aws:s3:::S3_Bucket_Created/*"
            ]
        }
    ]
}
```

------

Pour plus de détails sur ces autorisations d'écriture S3, reportez-vous au [guide Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions). Si vous utilisez une clé KMS pour chiffrer les données exportées, consultez les sections suivantes pour connaître les politiques IAM supplémentaires requises.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
            "kms:DescribeKey",
            "kms:Decrypt",
            "kms:GenerateDataKey*"
        ],
        "Resource": "arn:aws:kms:us-east-2:111122223333:key/*",
        "Condition": {
            "ForAnyValue:StringLike": {
                "kms:ResourceAliases": "alias/Alias_For_Generated_Key"
            }
        }
    }, {
        "Effect": "Allow",
        "Action": [
            "kms:CreateGrant"
        ],
        "Resource": "arn:aws:kms:us-east-2:111122223333:key/*",
        "Condition": {
            "ForAnyValue:StringEquals": {
                "kms:EncryptionContextKeys": "aws:timestream:database_name"
            },
            "Bool": {
                "kms:GrantIsForAWSResource": true
            },
            "StringLike": {
                "kms:ViaService": "timestream.us-east-2.amazonaws.com"
            },
            "ForAnyValue:StringLike": {
                "kms:ResourceAliases": "alias/Alias_For_Generated_Key"
            }
        }
    }
]
}
```

------

# Meilleures pratiques pour UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-best-practices"></a>

Vous trouverez ci-dessous les meilleures pratiques relatives à la commande UNLOAD.
+ La quantité de données pouvant être exportée vers le compartiment S3 à l'aide de la `UNLOAD` commande n'est pas limitée. Cependant, la requête expire au bout de 60 minutes et nous recommandons de ne pas exporter plus de 60 Go de données en une seule requête. Si vous devez exporter plus de 60 Go de données, répartissez le travail sur plusieurs requêtes.
+ Bien que vous puissiez envoyer des milliers de demandes à S3 pour télécharger les données, il est recommandé de paralléliser les opérations d'écriture sur plusieurs préfixes S3. Reportez-vous à la documentation [ici](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html). Le taux d'appels de l'API S3 peut être limité lorsque plusieurs personnes readers/writers accèdent au même dossier. 
+ Compte tenu de la limite de longueur de clé S3 pour définir un préfixe, nous recommandons que les noms des compartiments et des dossiers ne dépassent pas 10 à 15 caractères, en particulier lors de l'utilisation d'une `partitioned_by` clause. 
+ Lorsque vous recevez un 4XX ou un 5XX pour des requêtes contenant l'`UNLOAD`instruction, il est possible que des résultats partiels soient écrits dans le compartiment S3. Timestream for LiveAnalytics ne supprime aucune donnée de votre bucket. Avant d'exécuter une autre `UNLOAD` requête avec la même destination S3, nous vous recommandons de supprimer manuellement les fichiers créés par l'échec de la requête. Vous pouvez identifier les fichiers écrits par une requête ayant échoué avec le code correspondant`QueryExecutionId`. En cas d'échec des requêtes, Timestream for LiveAnalytics n'exporte pas de fichier manifeste vers le compartiment S3. 
+ Timestream for LiveAnalytics utilise le téléchargement en plusieurs parties pour exporter les résultats des requêtes vers S3. Lorsque vous recevez un 4XX ou un 5XX de Timestream pour des requêtes contenant une instruction UNLOAD, Timestream LiveAnalytics for LiveAnalytics fait de son mieux pour abandonner le téléchargement en plusieurs parties, mais il est possible que certaines parties incomplètes soient laissées pour compte. [C'est pourquoi nous vous recommandons de configurer un nettoyage automatique des téléchargements partitionnés incomplets dans votre compartiment S3 en suivant les instructions fournies ici.](https://aws.amazon.com/blogs/aws-cloud-financial-management/discovering-and-deleting-incomplete-multipart-uploads-to-lower-amazon-s3-costs/)

## Recommandations pour accéder aux données au format CSV à l'aide de l'analyseur CSV
<a name="export-unload-common-questions-what-information-recommendations-csv"></a>
+ Les analyseurs CSV ne vous permettent pas d'avoir le même caractère dans le séparateur, le caractère d'échappement et le caractère entre guillemets.
+ Certains analyseurs CSV ne peuvent pas interpréter les types de données complexes tels que les tableaux. Nous vous recommandons de les interpréter via le désérialiseur JSON. 

## Recommandations pour accéder aux données au format Parquet
<a name="export-unload-common-questions-what-information-recommendations-parquet"></a>

1. Si votre cas d'utilisation nécessite la prise en charge des caractères UTF-8 dans le schéma, c'est-à-dire dans le nom de colonne, nous vous recommandons d'utiliser la bibliothèque [Parquet-MR](https://github.com/apache/parquet-mr).

1. L'horodatage de vos résultats est représenté par un entier de 12 octets () INT96

1. Les séries temporelles seront représentées sous `array<row<time, value>>` la forme suivante : les autres structures imbriquées utiliseront les types de données correspondants pris en charge au format Parquet

## Utilisation de la clause partition\$1by
<a name="export-unload-best-practices-partition-by"></a>
+ La colonne utilisée dans le `partitioned_by` champ doit être la dernière colonne de la requête de sélection. Si plusieurs colonnes sont utilisées dans le `partitioned_by` champ, les colonnes doivent être les dernières de la requête de sélection et dans le même ordre que celui utilisé dans le `partition_by` champ.
+ Les valeurs de colonne utilisées pour partitionner les données (`partitioned_by`champ) ne peuvent contenir que des caractères ASCII. Alors que Timestream pour LiveAnalytics autorise les caractères UTF-8 dans les valeurs, S3 ne prend en charge que les caractères ASCII en tant que clés d'objet.

# Exemple de cas d'utilisation pour UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-example-use-case"></a>

Supposons que vous surveillez les statistiques de session utilisateur, les sources de trafic et les achats de produits sur votre site Web de commerce électronique. Vous utilisez Timestream LiveAnalytics pour obtenir des informations en temps réel sur le comportement des utilisateurs, les ventes de produits et effectuer des analyses marketing sur les canaux de trafic (recherche organique, réseaux sociaux, trafic direct, campagnes payantes, etc.) qui dirigent les clients vers le site Web. 

**Topics**
+ [Exporter les données sans aucune partition](#export-unload-example-sample-1)
+ [Partitionnement des données par canal](#export-unload-example-sample-2)
+ [Partitionnement des données par événement](#export-unload-example-sample-3)
+ [Partitionnement des données par canal et par événement](#export-unload-example-sample-4)
+ [Fichiers de manifeste et de métadonnées](#export-unload-example-manifest-metadata)
+ [Utiliser les robots d'exploration Glue pour créer le catalogue de données Glue](#export-unload-example-using-glue-crawlers)

## Exporter les données sans aucune partition
<a name="export-unload-example-sample-1"></a>

Vous souhaitez exporter les deux derniers jours de vos données au format CSV.

```
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://<bucket_name>/withoutpartition' 
WITH (  format='CSV',   
compression='GZIP')
```

## Partitionnement des données par canal
<a name="export-unload-example-sample-2"></a>

Vous souhaitez exporter les données des deux derniers jours au format CSV, mais vous souhaitez disposer des données de chaque canal de trafic dans un dossier distinct. Pour ce faire, vous devez partitionner les données à l'aide de la `channel` colonne, comme indiqué ci-dessous.

```
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://<bucket_name>/partitionbychannel/' 
WITH (  
partitioned_by = ARRAY ['channel'], 
format='CSV',   
compression='GZIP')
```

## Partitionnement des données par événement
<a name="export-unload-example-sample-3"></a>

Vous souhaitez exporter les données des deux derniers jours au format CSV, mais vous souhaitez disposer des données de chaque événement dans un dossier distinct. Pour ce faire, vous devez partitionner les données à l'aide de la `event` colonne, comme indiqué ci-dessous.

```
UNLOAD(SELECT user_id, ip_address, channel, session_id, measure_name, time, 
query, quantity, product_id, event 
FROM sample_clickstream.sample_shopping 
WHERE time BETWEEN ago(2d) AND now())  
TO 's3://<bucket_name>/partitionbyevent/' 
WITH (  
partitioned_by = ARRAY ['event'], 
format='CSV',   
compression='GZIP')
```

## Partitionnement des données par canal et par événement
<a name="export-unload-example-sample-4"></a>

Vous souhaitez exporter les données des deux derniers jours au format CSV, mais vous souhaitez que les données de chaque chaîne soient stockées dans un dossier distinct au sein de la chaîne. Pour ce faire, vous devez partitionner les données en utilisant à la fois `event` la colonne `channel` et la colonne, comme indiqué ci-dessous.

```
UNLOAD(SELECT user_id, ip_address, session_id, measure_name, time, 
query, quantity, product_id, channel,event 
FROM sample_clickstream.sample_shopping 
WHERE time BETWEEN ago(2d) AND now())  
TO 's3://<bucket_name>/partitionbychannelevent/' 
WITH (  
partitioned_by = ARRAY ['channel','event'], 
format='CSV',   
compression='GZIP')
```

## Fichiers de manifeste et de métadonnées
<a name="export-unload-example-manifest-metadata"></a>

### Fichier manifeste
<a name="export-unload-common-questions-what-information-manifest"></a>

Le fichier manifeste fournit des informations sur la liste des fichiers exportés lors de l'exécution de UNLOAD. 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" 
  }
}
```

### Métadonnées
<a name="export-unload-common-questions-what-information-metadata"></a>

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><UUID>Le fichier de métadonnées est disponible dans le compartiment S3 fourni sous le nom de fichier : S3 : //bucket\$1name/ \$1 \$1metadata.json 

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 la réponse de l'API Query pour les `SELECT` requêtes. 

## Utiliser les robots d'exploration Glue pour créer le catalogue de données Glue
<a name="export-unload-example-using-glue-crawlers"></a>

1. Connectez-vous à votre compte avec les informations d'identification d'administrateur pour la validation suivante.

1. Créez une base de données Crawler for Glue en suivant les instructions fournies [ici](https://docs.aws.amazon.com/glue/latest/ug/tutorial-add-crawler.html). Veuillez noter que le dossier S3 à fournir dans la source de données doit être le dossier de `UNLOAD` résultats tel que`s3://my_timestream_unloads/results`.

1. Exécutez le crawler en suivant les instructions indiquées [ici.](https://docs.aws.amazon.com/glue/latest/ug/tutorial-add-crawler.html#tutorial-add-crawler-step2)

1. Consultez le tableau Glue.
   + Accédez à **AWS Glue** → **Tables**.
   + Vous verrez une nouvelle table créée avec le préfixe de table fourni lors de la création du crawler.
   + Vous pouvez consulter les informations relatives au schéma et à la partition en cliquant sur la vue détaillée de la table.

Vous trouverez ci-dessous d'autres AWS services et projets open source qui utilisent le catalogue de données AWS Glue.
+ **Amazon Athena** — Pour plus d'informations, consultez la section [Présentation des tables, des bases de données et des catalogues de données](https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html) dans le guide de l'utilisateur d'Amazon Athena.
+ **Amazon Redshift** Spectrum — Pour plus d'informations, [consultez la section Interrogation de données externes à l'aide d'Amazon Redshift Spectrum dans le manuel Amazon](https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html) Redshift Database Developer Guide.
+ **Amazon EMR** — Pour plus d'informations, consultez [Utiliser des politiques basées sur les ressources pour l'accès d'Amazon EMR au catalogue de AWS données Glue dans le](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) guide de gestion Amazon EMR.
+ **AWS Client Glue Data Catalog pour Apache Hive Metastore** — Pour plus d'informations sur ce GitHub projet, voir [Client AWS Glue Data Catalog pour Apache](https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore) Hive Metastore.

# Limites pour UNLOAD from Timestream pour LiveAnalytics
<a name="export-unload-limits"></a>

Voici les limites liées à la `UNLOAD` commande.
+ La simultanéité des requêtes utilisant l'`UNLOAD`instruction est d'une requête par seconde (QPS). Le dépassement du taux de requêtes peut entraîner un ralentissement.
+ Les requêtes contenant `UNLOAD` une instruction peuvent exporter au maximum 100 partitions par requête. Nous vous recommandons de vérifier le nombre distinct de la colonne sélectionnée avant de l'utiliser pour partitionner les données exportées.
+ Les requêtes contenant `UNLOAD` une instruction arrivent à expiration au bout de 60 minutes.
+ La taille maximale des fichiers créés par l'`UNLOAD`instruction dans Amazon S3 est de 78 Go.

Pour les autres limites de Timestream pour LiveAnalytics, voir [QuotasQuotas par défaut](ts-limits.md)