

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# subconsultas
<a name="CWL_QuerySyntax-Subqueries"></a>

Uma subconsulta é uma consulta aninhada do Logs Insights que pode ser usada como entrada para outra consulta. As subconsultas podem ser usadas para derivar conjuntos de resultados intermediários que são então consumidos pelos comandos subsequentes.

**Sintaxe**  


**Subconsulta no filtro**  


```
filter <field> in (
    <subquery>
)
```

**Parâmetros**  

+ `<subquery>`— Uma consulta válida do Logs Insights que retorna um conjunto de resultados. A subconsulta deve produzir campos referenciados pela consulta externa.

**Exemplos**  


**Example Exemplo 1: encontre solicitações que encontraram erros em serviços downstream**  
Este exemplo mostra como usar uma subconsulta para identificar solicitações em seu serviço principal que resultaram em erros em um serviço downstream. Isso é útil para solucionar falhas em cascata em sistemas distribuídos.  

```
filter requestId in (
    SOURCE '/aws/lambda/database-service'
    | filter errorType = "DatabaseConnectionTimeout"
    | fields requestId
)
| fields @timestamp, requestId, endpoint, userId, responseTime
| sort @timestamp desc
```
Essa consulta:  

1. A subconsulta encontra todos os `requestId` valores do serviço de banco de dados que tiveram tempos limite de conexão.

1. A consulta externa filtra os registros do seu serviço principal para mostrar somente as solicitações que correspondam às solicitações propensas a erros IDs

1. Os resultados mostram o contexto completo das solicitações que falharam posteriormente, incluindo quais endpoints e usuários foram afetados
Esse padrão ajuda você a entender o impacto inicial das falhas posteriores.

**Example Exemplo 2: Identifique solicitações frequentes de investigação direcionada**  
Este exemplo demonstra o uso de uma subconsulta com agregação para encontrar solicitações que falham repetidamente, o que geralmente indica problemas sistemáticos em vez de erros transitórios.  

```
filter requestId in (
    SOURCE '/aws/lambda/payment-processor'
    | filter status = "FAILED"
    | stats count(*) as failureCount by requestId
    | filter failureCount > 3
    | fields requestId
)
| fields @timestamp, requestId, customerId, amount, failureReason
| sort @timestamp asc
```
Essa consulta:  

1. A subconsulta agrega tentativas de pagamento malsucedidas e identifica a solicitação IDs que falhou mais de três vezes.

1. A consulta externa recupera todos os eventos de log para essas solicitações problemáticas IDs

1. Os resultados são classificados cronologicamente para mostrar a progressão das tentativas de repetição
Isso ajuda a distinguir entre falhas transitórias (ocorrência única) e problemas persistentes (várias falhas) que exigem uma investigação mais profunda.

**Comportamento**  

+ As subconsultas são executadas independentemente da consulta externa.
+ Os resultados são materializados antes de serem consumidos pela consulta externa.
+ Somente os campos selecionados explicitamente na subconsulta estão disponíveis para a consulta externa.

**Observações e limitações**  

+ As subconsultas devem retornar campos referenciados pela consulta externa.
+ Não há suporte para subconsultas aninhadas.
+ As subconsultas podem aumentar o tempo e o custo de execução da consulta.
+ Não há suporte para subconsultas correlacionadas.
+ A execução da consulta interna é limitada a 30 segundos.

**Comandos relacionados**  

+ [campos](CWL_QuerySyntax-Fields.md)
+ [filtro](CWL_QuerySyntax-Filter.md)
+ [analisar](CWL_QuerySyntax-Parse.md)
+ [stats](CWL_QuerySyntax-Stats.md)
+ [classificar](CWL_QuerySyntax-Sort.md)
+ [limit](CWL_QuerySyntax-Limit.md)