

# Consultar dados da Lente de Armazenamento do S3 com ferramentas de analytics
<a name="storage-lens-s3-tables-querying"></a>

Antes de consultar dados da Lente de Armazenamento do S3 exportados para a funcionalidade Tabelas do S3 usando serviços de analytics da AWS, como o Amazon Athena ou o Amazon EMR, é necessário habilitar a integração de analytics no bucket de tabela “aws-s3” gerenciado pela AWS e configurar permissões do AWS Lake Formation.

**Importante**  
A habilitação da integração de analytics no bucket de tabela “aws-s3” é uma etapa obrigatória que geralmente é esquecida. Sem essa configuração, não é possível consultar tabelas da Lente de Armazenamento do S3 Storage usando serviços de analytics da AWS.

## Pré-requisitos
<a name="storage-lens-s3-tables-querying-prerequisites"></a>

Antes de começar, verifique se você tem:
+ Uma configuração da Lente de Armazenamento do S3 com a exportação para Tabelas do S3 habilitada. Para ter mais informações, consulte [Exportar métricas da Lente de Armazenamento do S3 para a funcionalidade Tabelas do S3](storage-lens-s3-tables-export.md).
+ Acesso ao Amazon Athena ou a outro serviço de analytics.
+ Esperou de 24 a 48 horas após a habilitação da exportação para que os primeiros dados fossem disponibilizados.

## Visão geral da integração
<a name="storage-lens-s3-tables-querying-integration-overview"></a>

Para ter informações detalhadas sobre como integrar a funcionalidade Tabelas do S3 a serviços de analytics da AWS, bem como sobre pré-requisitos, configuração do perfil do IAM e procedimentos passo a passo, consulte [Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html) 

Depois de habilitar a exportação para Tabelas do S3 e configurar a integração de analytics, você pode consultar os dados da Lente de Armazenamento do S3 usando serviços de analytics da AWS, como Amazon Athena, Amazon Redshift e Amazon EMR. Isso permite que você realize análises personalizadas, crie painéis e extraia insights dos dados de armazenamento usando SQL padrão.

## Consultar com o Amazon Athena
<a name="storage-lens-s3-tables-querying-athena"></a>

O Amazon Athena é um serviço de consultas interativas sem servidor que facilita a análise de dados usando SQL padrão. Use as etapas a seguir para consultar dados da Lente de Armazenamento do S3 no Athena.

**nota**  
Em todos os exemplos de consulta, substitua `lens_my-config_exp` pelo namespace real de configuração da Lente de Armazenamento. Para ter mais informações sobre nomeação de namespaces, consulte [Nomenclatura de tabelas para exportação da Lente de Armazenamento para a funcionalidade Tabelas do S3](storage-lens-s3-tables-naming.md).

### Exemplo: consultar os principais consumidores de armazenamento
<a name="storage-lens-s3-tables-querying-athena-top-consumers"></a>

A seguinte consulta identifica os dez buckets principais por consumo de armazenamento:

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

### Exemplo: analisar o crescimento do armazenamento ao longo do tempo
<a name="storage-lens-s3-tables-querying-athena-growth"></a>

A seguinte consulta analisa o crescimento do armazenamento nos últimos trinta dias:

```
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;
```

### Exemplo: identificar multipart uploads incompletos
<a name="storage-lens-s3-tables-querying-athena-mpu"></a>

A seguinte consulta descobre buckets com multipart uploads incompletos com mais de sete dias:

```
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;
```

### Exemplo: descobrir candidatos a dados pouco acessados
<a name="storage-lens-s3-tables-querying-athena-cold-data"></a>

A seguinte consulta identifica prefixos sem atividade nos últimos cem dias que estão armazenados em níveis de armazenamento a quente:

```
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;
```

### Exemplo: analisar padrões de solicitação
<a name="storage-lens-s3-tables-querying-athena-requests"></a>

A seguinte consulta analisa os padrões de solicitação para entender a frequência de acesso:

```
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;
```

## Consultar com o Apache Spark no Amazon EMR
<a name="storage-lens-s3-tables-querying-emr"></a>

O Amazon EMR disponibiliza um framework gerenciado do Hadoop que facilita o processamento de grandes quantidades de dados usando o Apache Spark. É possível usar o conector do Iceberg para ler tabelas da Lente de Armazenamento do S3 diretamente.

### Ler tabelas do S3 com o Spark
<a name="storage-lens-s3-tables-querying-emr-spark"></a>

Use o seguinte código Python para ler dados da Lente de Armazenamento do S3 com o 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)
```

## Práticas recomendadas de otimização de consultas
<a name="storage-lens-s3-tables-querying-optimization"></a>

Siga estas práticas recomendadas para otimizar o desempenho de consulta e reduzir os custos:
+  **Filtre por report\_time**: sempre inclua filtros de data para reduzir a quantidade de dados verificados. Isso é especialmente importante para tabelas com longos períodos de retenção.

  ```
  WHERE report_time >= current_date - interval '7' day
  ```
+  **Use filtros record\_type**: especifique o nível de agregação apropriado (ACCOUNT, BUCKET, PREFIX) para consultar somente os dados necessários.

  ```
  WHERE record_type = 'BUCKET'
  ```
+  **Inclua cláusulas LIMIT**: use LIMIT em consultas exploratórias para controlar o tamanho do resultado e reduzir os custos da consulta.

  ```
  LIMIT 100
  ```
+  **Filtre registros vazios**: use condições para excluir registros vazios ou de valor zero.

  ```
  WHERE storage_bytes > 0
  ```
+  **Use os dados mais recentes**: ao analisar o estado atual, filtre pelo report\_time mais recente para evitar a verificação de dados históricos.

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

### Exemplo de padrão de consulta otimizado
<a name="storage-lens-s3-tables-querying-optimization-example"></a>

A seguinte consulta demonstra as práticas recomendadas de otimização:

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

## Solução de problemas
<a name="storage-lens-s3-tables-querying-troubleshooting"></a>

### A consulta não exibe resultados
<a name="storage-lens-s3-tables-querying-troubleshooting-no-results"></a>

 **Problema:** a consulta foi concluída com êxito, mas não exibe resultados.

 **Solução:** 
+ Verifique se os dados estão disponíveis conferindo o último report\_time:

  ```
  SELECT MAX(report_time) AS latest_data
  FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics";
  ```
+ Verifique se você está usando o nome de namespace correto. Use `SHOW TABLES IN `lens_my-config_exp`;` para listar as tabelas disponíveis.
+ Espere de 24 a 48 horas após a habilitação da exportação para Tabelas do S3 para que os primeiros dados sejam disponibilizados.

### Erros de acesso negado
<a name="storage-lens-s3-tables-querying-troubleshooting-access"></a>

 **Problema:** você recebe erros de acesso negado ao executar consultas.

 **Solução:** verifique se as permissões do AWS Lake Formation estão configuradas corretamente. Para ter mais informações, consulte [Integrating Amazon S3 Tables with AWS analytics services](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html). 

## Próximas etapas
<a name="storage-lens-s3-tables-querying-next-steps"></a>
+ Saiba mais sobre o [Usar assistentes de IA com tabelas da Lente de Armazenamento do S3](storage-lens-s3-tables-ai-tools.md)
+ Analise o [Glossário de métricas de lente de armazenamento do Amazon S3](storage_lens_metrics_glossary.md) para ver definições de métrica.
+ Explore [Casos de uso das métricas da Lente de Armazenamento do Amazon S3](storage-lens-use-cases.md) para ver mais ideias de análise.
+ Saiba mais sobre o [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) para consultas sem servidor.