

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.

# Interrogation des données de S3 Storage Lens à l'aide d'outils d'analyse
<a name="storage-lens-s3-tables-querying"></a>

Avant de pouvoir interroger les données S3 Storage Lens exportées vers S3 Tables à l'aide de services AWS d'analyse tels qu'Amazon Athena ou Amazon EMR, vous devez activer l'intégration des analyses dans le compartiment de table « aws-s3 » AWS géré par -managed et configurer les autorisations. AWS Lake Formation 

**Important**  
L'activation de l'intégration des analyses dans le bucket de table « aws-s3 » est une étape obligatoire qui est souvent oubliée. Sans cette configuration, vous ne pourrez pas interroger vos tables S3 Storage Lens à l'aide des services AWS d'analyse.

## Conditions préalables
<a name="storage-lens-s3-tables-querying-prerequisites"></a>

Avant de commencer, assurez-vous d'avoir :
+ Une configuration S3 Storage Lens avec exportation de tables S3 activée. Pour plus d’informations, consultez [Exportation des métriques de S3 Storage Lens vers des tables S3](storage-lens-s3-tables-export.md).
+ Accès à Amazon Athena ou à un autre service d'analyse.
+ A attendu 24 à 48 heures après avoir activé l'exportation pour que les premières données soient disponibles.

## Présentation de l’intégration
<a name="storage-lens-s3-tables-querying-integration-overview"></a>

Pour obtenir des informations détaillées sur l'intégration des tables S3 aux services AWS d'analyse, notamment les prérequis, la configuration des rôles IAM et step-by-step les procédures, consultez la section [Intégration des tables Amazon S3 aux services AWS d'analyse](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html). 

Après avoir activé l'exportation des tables S3 et configuré l'intégration des analyses, vous pouvez interroger vos données S3 Storage Lens à l'aide de services AWS d'analyse tels qu'Amazon Athena, Amazon Redshift et Amazon EMR. Cela vous permet d'effectuer des analyses personnalisées, de créer des tableaux de bord et de tirer des informations de vos données de stockage à l'aide du SQL standard.

## Effectuer des requêtes avec Amazon Athena
<a name="storage-lens-s3-tables-querying-athena"></a>

Amazon Athena est un service de requête interactif sans serveur qui facilite l'analyse des données à l'aide du langage SQL standard. Procédez comme suit pour interroger les données S3 Storage Lens dans Athena.

**Note**  
Dans tous les exemples de requête, remplacez `lens_my-config_exp` par votre espace de noms de configuration Storage Lens actuel. Pour plus d'informations sur la dénomination des espaces de noms, consultez[Dénomination des tables pour l'exportation de S3 Storage Lens vers S3 Tables](storage-lens-s3-tables-naming.md).

### Exemple : interrogez les principaux consommateurs de stockage
<a name="storage-lens-s3-tables-querying-athena-top-consumers"></a>

La requête suivante identifie les 10 compartiments les plus utilisés en termes de consommation de stockage :

```
SELECT 
    bucket_name,
    storage_class,
    SUM(storage_bytes) / POWER(1024, 3) AS storage_gb,
    SUM(object_count) AS objects
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
WHERE report_time = (
    SELECT MAX(report_time) 
    FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
)
    AND record_type = 'BUCKET'
    AND bucket_name != ''
GROUP BY bucket_name, storage_class
ORDER BY storage_gb DESC
LIMIT 10
```

### Exemple : analyse de la croissance du stockage au fil du temps
<a name="storage-lens-s3-tables-querying-athena-growth"></a>

La requête suivante analyse la croissance du stockage au cours des 30 derniers jours :

```
SELECT 
    CAST(report_time AS date) AS report_date,
    SUM(storage_bytes) / POWER(1024, 3) AS total_storage_gb
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
WHERE report_time >= current_date - interval '30' day
    AND record_type = 'ACCOUNT'
GROUP BY CAST(report_time AS date)
ORDER BY report_date DESC;
```

### Exemple : identifier les téléchargements partitionnés incomplets
<a name="storage-lens-s3-tables-querying-athena-mpu"></a>

La requête suivante permet de trouver des buckets contenant des chargements partitionnés incomplets datant de plus de 7 jours :

```
SELECT 
    bucket_name,
    SUM(incomplete_mpu_storage_older_than_7_days_bytes) / POWER(1024, 3) AS wasted_storage_gb,
    SUM(incomplete_mpu_object_older_than_7_days_count) AS wasted_objects
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
WHERE report_time = (
    SELECT MAX(report_time) 
    FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
)
    AND record_type = 'BUCKET'
    AND incomplete_mpu_storage_older_than_7_days_bytes > 0
GROUP BY bucket_name
ORDER BY wasted_storage_gb DESC;
```

### Exemple : trouver des candidats pour des données non traitées
<a name="storage-lens-s3-tables-querying-athena-cold-data"></a>

La requête suivante identifie les préfixes sans activité au cours des 100 derniers jours qui sont stockés dans des niveaux de stockage à chaud :

```
WITH recent_activity AS (
    SELECT DISTINCT 
        bucket_name,
        record_value AS prefix_path
    FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_activity_metrics"
    WHERE report_time >= current_date - interval '100' day
        AND record_type = 'PREFIX'
        AND all_request_count > 0
)
SELECT 
    s.bucket_name,
    s.record_value AS prefix_path,
    s.storage_class,
    SUM(s.storage_bytes) / POWER(1024, 3) AS storage_gb
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_storage_metrics" s
LEFT JOIN recent_activity r 
    ON s.bucket_name = r.bucket_name 
    AND s.record_value = r.prefix_path
WHERE s.report_time = (
    SELECT MAX(report_time) 
    FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_storage_metrics"
)
    AND s.record_type = 'PREFIX'
    AND s.storage_class IN ('STANDARD', 'REDUCED_REDUNDANCY')
    AND s.storage_bytes > 1073741824  -- > 1GB
    AND r.prefix_path IS NULL  -- No recent activity
GROUP BY s.bucket_name, s.record_value, s.storage_class
ORDER BY storage_gb DESC
LIMIT 20;
```

### Exemple : analyser les modèles de demandes
<a name="storage-lens-s3-tables-querying-athena-requests"></a>

La requête suivante analyse les modèles de demandes pour comprendre la fréquence d'accès :

```
SELECT 
    bucket_name,
    SUM(all_request_count) AS total_requests,
    SUM(get_request_count) AS get_requests,
    SUM(put_request_count) AS put_requests,
    ROUND(100.0 * SUM(get_request_count) / NULLIF(SUM(all_request_count), 0), 2) AS get_percentage,
    SUM(downloaded_bytes) / POWER(1024, 3) AS downloaded_gb
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_activity_metrics"
WHERE report_time >= current_date - interval '7' day
    AND record_type = 'BUCKET'
    AND bucket_name != ''
GROUP BY bucket_name
HAVING SUM(all_request_count) > 0
ORDER BY total_requests DESC
LIMIT 10;
```

## Interrogation avec Apache Spark sur Amazon EMR
<a name="storage-lens-s3-tables-querying-emr"></a>

Amazon EMR fournit un framework Hadoop géré qui facilite le traitement de grandes quantités de données à l'aide d'Apache Spark. Vous pouvez utiliser le connecteur Iceberg pour lire directement les tables S3 Storage Lens.

### Lisez les tables S3 avec Spark
<a name="storage-lens-s3-tables-querying-emr-spark"></a>

Utilisez le code Python suivant pour lire les données S3 Storage Lens avec Spark :

```
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("S3StorageLensAnalysis") \
    .config("spark.sql.catalog.s3tablescatalog", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tablescatalog.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
    .getOrCreate()

# Read S3 Storage Lens data
df = spark.read \
    .format("iceberg") \
    .load("s3tablescatalog/aws-s3.lens_my-config_exp.default_storage_metrics")

# Analyze data
df.filter("record_type = 'BUCKET'") \
    .groupBy("bucket_name", "storage_class") \
    .sum("storage_bytes") \
    .orderBy("sum(storage_bytes)", ascending=False) \
    .show(10)
```

## Bonnes pratiques d'optimisation des requêtes
<a name="storage-lens-s3-tables-querying-optimization"></a>

Suivez ces bonnes pratiques pour optimiser les performances des requêtes et réduire les coûts :
+  **Filtrer par report\$1time** : incluez toujours des filtres de date pour réduire la quantité de données numérisées. Cela est particulièrement important pour les tables dont la durée de conservation est longue.

  ```
  WHERE report_time >= current_date - interval '7' day
  ```
+  **Utilisez les filtres record\$1type** : spécifiez le niveau d'agrégation approprié (ACCOUNT, BUCKET, PREFIX) pour n'interroger que les données dont vous avez besoin.

  ```
  WHERE record_type = 'BUCKET'
  ```
+  **Inclure des clauses LIMIT** : utilisez LIMIT pour les requêtes exploratoires afin de contrôler la taille des résultats et de réduire les coûts des requêtes.

  ```
  LIMIT 100
  ```
+  **Filtrer les enregistrements vides** : utilisez des conditions pour exclure les enregistrements vides ou à valeur nulle.

  ```
  WHERE storage_bytes > 0
  ```
+  **Utiliser les données les plus récentes** : lors de l'analyse de l'état actuel, filtrez en fonction du dernier report\$1time pour éviter de scanner les données historiques.

  ```
  WHERE report_time = (SELECT MAX(report_time) FROM table_name)
  ```

### Exemple de modèle de requête optimisé
<a name="storage-lens-s3-tables-querying-optimization-example"></a>

La requête suivante illustre les meilleures pratiques en matière d'optimisation :

```
SELECT 
    bucket_name,
    SUM(storage_bytes) / POWER(1024, 3) AS storage_gb
FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"
WHERE report_time >= current_date - interval '7' day  -- Date filter
    AND record_type = 'BUCKET'                         -- Record type filter
    AND storage_bytes > 0                              -- Non-empty filter
    AND bucket_name != ''                              -- Non-empty filter
GROUP BY bucket_name
ORDER BY storage_gb DESC
LIMIT 100;                                             -- Result limit
```

## Résolution des problèmes
<a name="storage-lens-s3-tables-querying-troubleshooting"></a>

### La requête ne renvoie aucun résultat
<a name="storage-lens-s3-tables-querying-troubleshooting-no-results"></a>

 **Problème :** votre requête se termine correctement mais ne renvoie aucun résultat.

 **Solution :** 
+ Vérifiez que les données sont disponibles en vérifiant le dernier report\$1time :

  ```
  SELECT MAX(report_time) AS latest_data
  FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics";
  ```
+ Assurez-vous d'utiliser le nom d'espace de noms correct. `SHOW TABLES IN `lens_my-config_exp`;`À utiliser pour répertorier les tables disponibles.
+ Attendez 24 à 48 heures après avoir activé l'exportation des tables S3 pour que les premières données soient disponibles.

### Erreurs d’accès refusé
<a name="storage-lens-s3-tables-querying-troubleshooting-access"></a>

 **Problème :** vous recevez des messages d'erreur de refus d'accès lors de l'exécution de requêtes.

 **Solution :** Vérifiez que AWS Lake Formation les autorisations sont correctement configurées. Pour plus d'informations, consultez la section [Intégration des tables Amazon S3 aux services AWS d'analyse.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html) 

## Étapes suivantes
<a name="storage-lens-s3-tables-querying-next-steps"></a>
+ En savoir plus sur [Utilisation d'assistants IA avec les tables S3 Storage Lens](storage-lens-s3-tables-ai-tools.md)
+ Consultez les définitions [Glossaire des métriques Amazon S3 Storage Lens](storage_lens_metrics_glossary.md) des mesures
+ Explorez [Cas d’utilisation des métriques Amazon S3 Storage Lens](storage-lens-use-cases.md) pour plus d'idées d'analyse
+ En savoir plus sur [Amazon Athena pour les requêtes sans](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) serveur