

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á.

# CloudWatch Sintaxe de consulta de linguagem do Logs Insights
<a name="CWL_QuerySyntax"></a>

 Esta seção fornece detalhes sobre o Logs Insights QL. A sintaxe de consulta é compatível com diferentes funções e operações que incluem, mas não se limitam a funções gerais, operações aritméticas e de comparação e expressões regulares.

**Importante**  
Para evitar custos excessivos ao executar consultas grandes, lembre-se das seguintes práticas recomendadas:  
Selecione apenas os grupos de logs necessários para cada consulta.
Sempre especifique o menor intervalo de tempo possível para suas consultas.
Ao usar o console para executar consultas, cancele todas as consultas antes de fechar a página do console do CloudWatch Logs Insights. Caso contrário, as consultas continuarão sendo executadas até serrem concluídas.
Ao adicionar um widget do CloudWatch Logs Insights a um painel, certifique-se de que o painel não seja atualizado com alta frequência, pois cada atualização inicia uma nova consulta.

Para criar consultas contendo vários comandos, separe-os com o caractere de barra vertical (**\$1**).

Para criar consultas contendo comentários, marque-os com o caractere de grade (**\$1**). 

**nota**  
 CloudWatch O Logs Insights descobre automaticamente campos para diferentes tipos de registro e gera campos que começam com o caractere **@**. Para obter mais informações sobre esses campos, consulte [Registros suportados e campos descobertos](https://docs.aws.amazon.com/en_us/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData-discoverable-fields.html) no *Guia CloudWatch do usuário da Amazon*. 

A tabela a seguir descreve resumidamente cada comando. Em seguida, há uma descrição mais abrangente de cada comando com exemplos.

**nota**  
Todos os comandos de consulta do Logs Insights QL são compatíveis com os grupos de logs da classe de logs Padrão. Os grupos de logs da classe de logs de Acesso infrequente são compatíveis com todos os comandos de consulta do Logs Insights QL, exceto `pattern`, `diff` e `unmask`.


|  |  | 
| --- |--- |
| **` anomaly`**  | Identifica padrões incomuns em dados de log usando machine learning.  | 
| **` display`**  |  Exibe um ou mais campos específicos em resultados de consultas.  | 
| **` fields`**  |  Exibe campos específicos em resultados de consultas e oferece suporte a funções e operações que podem ser usadas para modificar valores de campo e criar novos campos para uso em consultas.  | 
| **` filter`**  |  Filtra a consulta para retornar apenas os eventos de log que correspondem a uma ou mais condições.  | 
| **` filterIndex`**  |  Força uma consulta a tentar verificar somente os grupos de logs que estão indexados no campo mencionado em um índice de campo e também contêm um valor para esse índice de campo. Isso reduz o volume escaneado ao tentar verificar somente eventos de logs desses grupos que contêm o valor especificado na consulta para esse índice de campo.  Esse comando não é compatível com os grupos de logs da classe de logs de Acesso infrequente. | 
| **` pattern`**  | Agrupa automaticamente seus dados de log em padrões. Um padrão é uma estrutura de texto compartilhada que se repete entre seus campos de registro. CloudWatch O Logs Insights fornece maneiras de analisar os padrões encontrados em seus eventos de registro. Para obter mais informações, consulte [Análise de padrões](CWL_AnalyzeLogData_Patterns.md). | 
| **` diff`**  | Compara os eventos de log encontrados no período solicitado com os eventos de log de um período anterior de igual duração, para que você possa procurar tendências e descobrir se determinados eventos de log são novos.  | 
| **` parse`**  |  Extrai dados de um campo de log para criar um campo extraído que pode ser processado na consulta. **`parse`** é compatível tanto com o modo glob usando curingas quanto com as expressões regulares.  | 
| **` sort`**  | Exibe os eventos de log retornados em ordem crescente (`asc`) ou decrescente (`desc`).  | 
| **` SOURCE`**  | Incluir `SOURCE` em uma consulta é uma forma útil de especificar uma grande quantidade de grupos de logs com base no prefixo do nome do grupo, nos identificadores de conta e na classe do grupo de logs a serem incluídos em uma consulta. Esse comando é suportado somente quando você cria uma consulta no AWS CLI ou programaticamente, não no CloudWatch console.  | 
| **` stats`**  |  Calcule estatísticas agregadas usando valores nos campos de log.  | 
| **` limit`**  | Especifica um número máximo de eventos de log que você deseja que sua consulta retorne. Útil com **`sort`** para retornar resultados “20 principais” ou “20 mais recentes”.  | 
| **` dedup`**  |  Remove resultados duplicados com base em valores específicos em campos que você especifica. | 
| **` unmask`**  |  Exibe todo o conteúdo de um evento de log que tenha algum conteúdo mascarado devido à política de proteção de dados. Para mais informações sobre a proteção de dados nos grupos de logs, acesse [Ajude a proteger dados de log confidenciais com mascaramento](mask-sensitive-log-data.md).  | 
|   **`[unnest](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-Unnest.html)`**   |   Nivela uma lista usada como entrada para gerar vários registros com um único registro para cada elemento na lista.   | 
| **` lookup`**  | Enriquece os eventos de log com dados de uma tabela de pesquisa combinando os valores dos campos. Use tabelas de pesquisa para adicionar dados de referência, como detalhes do usuário, nomes de aplicativos ou informações do produto, aos resultados da consulta. | 
| ** [Outras operações e funções](CWL_QuerySyntax-operations-functions.md)**  | CloudWatch O Logs Insights também oferece suporte a muitas funções e operações de comparação, aritmética, data e hora, numéricas, seqüências de caracteres, endereços IP e funções e operações gerais.  | 

As seções a seguir fornecem mais detalhes sobre os comandos de consulta do CloudWatch Logs Insights.

**Topics**
+ [Comandos do Logs Insights QL compatíveis com as classes de log](CWL_AnalyzeLogData_Classes.md)
+ [anomalia](CWL_QuerySyntax-Anomaly.md)
+ [**display**](CWL_QuerySyntax-Display.md)
+ [fields](CWL_QuerySyntax-Fields.md)
+ [filtrar](CWL_QuerySyntax-Filter.md)
+ [filterIndex](CWL_QuerySyntax-FilterIndex.md)
+ [SOURCE](CWL_QuerySyntax-Source.md)
+ [pattern](CWL_QuerySyntax-Pattern.md)
+ [diferença](CWL_QuerySyntax-Diff.md)
+ [parse](CWL_QuerySyntax-Parse.md)
+ [sort](CWL_QuerySyntax-Sort.md)
+ [stats](CWL_QuerySyntax-Stats.md)
+ [limite](CWL_QuerySyntax-Limit.md)
+ [dedup](CWL_QuerySyntax-Dedup.md)
+ [unmask](CWL_QuerySyntax-Unmask.md)
+ [unnest](CWL_QuerySyntax-Unnest.md)
+ [lookup](CWL_QuerySyntax-Lookup.md)
+ [Funções booleanas, de comparação, numéricas e de data e hora, entre outras](CWL_QuerySyntax-operations-functions.md)
+ [Campos contendo caracteres especiais](CWL_QuerySyntax-Guidelines.md)
+ [Usar aliases e comentários em consultas](CWL_QuerySyntax-alias.md)

# Comandos do Logs Insights QL compatíveis com as classes de log
<a name="CWL_AnalyzeLogData_Classes"></a>

Todos os comandos de consulta do Logs Insights QL são compatíveis com os grupos de logs da classe de logs Padrão. Os grupos de logs da classe de logs de Acesso infrequente são compatíveis com todos os comandos de consulta, exceto `pattern`, `diff`, `filterIndex` e `unmask`.

# anomalia
<a name="CWL_QuerySyntax-Anomaly"></a>

 Use `anomaly` para identificar automaticamente padrões incomuns e possíveis problemas em seus dados de log usando machine learning. 

O comando `anomaly` amplia a funcionalidade `pattern` existente e aproveita os analytics avançados para ajudar a identificar possíveis anomalias nos dados de log. Você pode usar `anomaly` para reduzir o tempo necessário para identificar e resolver problemas operacionais, revelando automaticamente padrões ou comportamentos incomuns em seus logs.

O comando `anomaly` trabalha com o comando ` pattern` para, primeiramente, identificar padrões de log e, em seguida, detectar anomalias nesses padrões. Você também pode combinar `anomaly` com os comandos ` filter` ou ` sort` e concentrar a detecção de anomalias em subconjuntos específicos de seus dados. 

**Entrada de comando de anomalia**

 Normalmente, o comando `anomaly` é usado após o comando ` pattern` para analisar os padrões identificados em seus dados de log. O comando não exige parâmetros adicionais e analisa a saída dos comandos anteriores em sua consulta. 

**Tipos de anomalias identificadas**

 O comando `anomaly` identifica cinco tipos distintos de anomalias:
+ *Anomalias de frequência de padrões*: frequências incomuns de padrões de log específicos, como quando um aplicativo começa a gerar mais mensagens de erro do que o normal.
+ *Anomalias de padrões novos*: padrões de log inéditos que podem indicar novos tipos de erros ou mensagens aparecendo em seus logs.
+ *Anomalias de variação de token*: mudanças inesperadas no conteúdo das mensagens de log que podem indicar variações incomuns nos formatos de log esperados.
+ *Anomalias de tokens numéricos*: mudanças incomuns nos valores numéricos nos logs que podem ajudar a detectar possíveis problemas de desempenho ou variações métricas inesperadas.
+ *Anomalias do código de erro HTTP*: padrões relacionados às respostas de erro HTTP, particularmente úteis ao monitorar aplicativos da web e. APIs

**Saída do comando de anomalia**

 O comando `anomaly` preserva todos os campos dos dados de entrada e adiciona resultados de detecção de anomalias para ajudar a identificar padrões incomuns em seus dados de log.

**Exemplos**

O seguinte comando identifica padrões em seus dados de log e, em seguida, detecta anomalias nesses padrões:

```
fields @timestamp, @message
| pattern @message
| anomaly
```

O comando `anomaly` pode ser usado com filtragem para se concentrar em tipos de log específicos:

```
fields @timestamp, @message
| filter @type = "REPORT"
| pattern @message
| anomaly
```

O comando `anomaly` pode ser combinado com a classificação para organizar os resultados:

```
fields @timestamp, @message
| filter @type = "ERROR"
| pattern @message
| anomaly
| sort @timestamp desc
```

# **display**
<a name="CWL_QuerySyntax-Display"></a>

 Use `display` para mostrar um ou mais campos específicos nos resultados da consulta. 

 O comando `display` mostra apenas os campos especificados. Se sua consulta contiver vários comandos `display`, os resultados da consulta mostram apenas o campo ou os campos que você especificou no comando `display` final.

 **Exemplo: Exibir um campo** 

 O trecho de código mostra um exemplo de uma consulta que usa o comando parse para extrair dados de `@message` para criar os campos extraídos `loggingType` e `loggingMessage`. A consulta retorna eventos de log em que os valores para `loggingType` são **ERROR**. `display` mostra somente os valores para `loggingMessage` nos resultados da consulta. 

```
fields @message
| parse @message "[*] *" as loggingType, loggingMessage
| filter loggingType = "ERROR"
| display loggingMessage
```

**dica**  
 Use `display` somente uma vez em uma consulta. Se você usar `display` mais de uma vez em uma consulta, os resultados da consulta mostram apenas os campos especificados na última ocorrência em que o comando `display` for usado. 

# fields
<a name="CWL_QuerySyntax-Fields"></a>

 Use `fields` para mostrar campos específicos nos resultados da consulta. 

Se sua consulta contiver vários comandos `fields` e não incluir um comando `display`, os resultados exibirão todos os campos especificados nos comandos `fields`.

 **Exemplo: Exibir campos específicos** 

 O exemplo a seguir mostra uma consulta que retorna 20 eventos de logs e os exibe em ordem decrescente. Os valores para `@timestamp` e `@message` são mostrados nos resultados da consulta. 

```
fields @timestamp, @message
| sort @timestamp desc
| limit 20
```

Use `fields` em vez de `display` quando não quiser usar as diferentes funções e operações compatíveis com o `fields` para modificar valores de campo e criar novos campos que podem ser usados em consultas. 

É possível usar o comando `fields` com a palavra-chave *as* para criar campos extraídos que usam os campos e funções de seus eventos de log. Por exemplo, `fields ispresent as isRes` cria um campo extraído chamado `isRes`, e o campo extraído pode ser usado no restante de sua consulta. 

# filtrar
<a name="CWL_QuerySyntax-Filter"></a>

 Use `filter` para obter eventos de log que correspondam a uma ou mais condições. 

 **Exemplo: Filtrar eventos de log usando uma condição** 

 O trecho de código mostra um exemplo de uma consulta que retorna todos os eventos de log em que o valor de `range` é maior do que ***3000***. A consulta limita os resultados a 20 eventos de log e classifica os eventos de registros por `@timestamp` e em ordem decrescente. 

```
fields @timestamp, @message
| filter (range>3000)
| sort @timestamp desc
| limit 20
```

 **Exemplo: Filtrar eventos de log usando mais de uma condição** 

 Você pode usar as palavras-chave `and` e `or` para combinar mais de uma condição. 

 O trecho de código mostra um exemplo de consulta que retorna todos os eventos de log em que o valor de `range` é maior do que ***3.000*** e o valor de `accountId` é igual a ***123.456.789.012***. A consulta limita os resultados a 20 eventos de log e classifica os eventos de registros por `@timestamp` e em ordem decrescente. 

```
fields @timestamp, @message
| filter (range>3000 and accountId=123456789012)
| sort @timestamp desc
| limit 20
```

## Campos indexados e o comando de filtro
<a name="CWL_QuerySyntax-index"></a>

Se você criou índices de campo para um grupo de logs, pode aproveitar esses índices de campo para tornar suas consultas no `filter` mais eficientes e reduzir o volume digitalizado. Por exemplo, suponha que você tenha criado um índice de campo para `requestId`. Em seguida, qualquer consulta do CloudWatch Logs Insights nesse grupo de registros que `filter requestId IN [value, value, ...]` inclua `filter requestId = value` ou tente ignorar o processamento de eventos de log que se sabe que não incluem o campo indexado. Ao tentar verificar somente os eventos de log conhecidos por conter esse campo indexado, o volume de escaneamento pode ser reduzido, e a consulta é mais rápida.

Para obter mais informações sobre os índices de campo e como criá-los, consulte [Crie índices de campo para melhorar o desempenho da consulta e reduzir o volume de escaneamento](CloudWatchLogs-Field-Indexing.md).

**Importante**  
Somente consultas com `filter fieldName =...` e `filter fieldName IN...` se beneficiarão das melhorias no índice de campo. As consultas com `filter fieldName like` não usam índices e sempre examinam todos os eventos de logs nos grupos de logs selecionados.

** Exemplo: encontre eventos de logs relacionados a um determinado ID de solicitação usando índices ** 

 Este exemplo pressupõe que você criou um índice de campo no `requestId`. Para grupos de logs que usam esse índice de campo, a consulta aproveitará os índices de campo para tentar verificar a menor quantidade de eventos de logs e encontrar eventos com `requestId` e um valor de `123456` 

```
fields @timestamp, @message
| filter requestId = "1234656"
| limit 20
```

## Correspondências e expressões regulares no comando de filtro
<a name="CWL_QuerySyntax-regex"></a>

O comando filtrar é compatível com o uso de expressões regulares. Você pode usar os seguintes operadores de comparação (`=`, `!=`, `<`, `<=`, `>`, `>=`) e operadores boolianos (`and`, `or` e `not`).

Você pode usar a palavra-chave `in` para testar a associação do conjunto e verificar se há elementos em uma matriz. Para verificar elementos em uma matriz, coloque a matriz após `in`. É possível usar o operador booliano `not` com `in`. Você pode criar consultas que usam `in` para retornar eventos de log nos quais os campos são correspondências de string. Os campos devem ser strings completas. Por exemplo, o trecho de código a seguir mostra uma consulta que usa `in` para retornar eventos de log nos quais o campo `logGroup` é a string `example_group` completa.

```
fields @timestamp, @message
| filter logGroup in ["example_group"]
```

Você pode usar as frases de palavras-chave `like` e `not like` para combinar substrings. Você pode usar o operador de expressão regular `=~` para combinar substrings. Para fazer a correspondência de uma substring com `like` e `not like`, envolva entre aspas duplas ou simples a substring que deseja corresponder. Você pode usar padrões de expressão regular com `like` e `not like`. Para fazer a correspondência de uma substritng com o operador de expressão regular, envolva entre barras a substring a ser correspondida. Os exemplos a seguir contêm trechos de código que mostram como você pode fazer a correspondências de substrings usando o comando `filter`.

**Exemplos: correspondência de substrings**

 Os exemplos a seguir retornam eventos de log quando `f1` contém a palavra ***Exception***. Os três exemplos fazem distinção entre maiúsculas e minúsculas. 

O primeiro exemplo faz a correspondência de uma substring com `like`. 

```
fields f1, f2, f3 
| filter f1 like "Exception"
```

 O segundo exemplo faz a correspondência de uma substring com `like` e um padrão de expressão regular. 

```
fields f1, f2, f3 
| filter f1 like /Exception/
```

 O terceiro exemplo faz a correspondência de uma substring com uma expressão regular. 

```
fields f1, f2, f3 
| filter f1 =~ /Exception/
```

**Exemplo: fazer a correspondência de substrings com curingas**

 Você pode usar o símbolo de ponto (`.`) como um curinga em expressões regulares para fazer a correspondência com substrings. No exemplo a seguir, a consulta retorna correspondências em que o valor de `f1` começa com a string `ServiceLog`. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog./
```

 Você pode colocar um símbolo de asterisco depois do ponto (`.*`) para criar um quantificador ganancioso que retorna o maior número possível de correspondências. No exemplo a seguir, a consulta retorna correspondências em que o valor de `f1` não somente começa com a string `ServiceLog`, mas também inclui a string `ServiceLog`. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog.*/
```

 As correspondências possíveis podem ser formatadas da seguinte forma: 
+  `ServiceLogSampleApiLogGroup` 
+  `SampleApiLogGroupServiceLog` 

**Exemplo: excluir substrings das correspondências**

O exemplo a seguir mostra uma consulta que retorna eventos de log quando `f1` não contém a palavra ***Exception***. O exemplo diferencia minúsculas e maiúsculas.

```
fields f1, f2, f3 
| filter f1 not like "Exception"
```

**Exemplo: fazer a correspondência de subcadeias de caracteres com padrões que não diferenciam maiúsculas e minúsculas**

Você pode fazer a correspondência de subcadeias de caracteres que não diferenciam minúsculas e maiúsculas com `like` e expressões regulares. Coloque o seguinte parâmetro (**?i**) antes da substring a ser correspondida. O exemplo a seguir mostra uma consulta que retorna eventos de log quando `f1` contém a palavra ***Exception*** ou ***exception***.

```
fields f1, f2, f3 
| filter f1 like /(?i)Exception/
```

# filterIndex
<a name="CWL_QuerySyntax-FilterIndex"></a>

 Use `filterIndex` para retornar somente dados indexados, forçando uma consulta a verificar somente grupos de logs indexados em um campo especificado na consulta. Para esses grupos de logs indexados nesse campo, ele otimiza ainda mais a consulta ignorando os grupos que não têm nenhum evento de logs contendo o campo especificado na consulta do campo indexado. Isso reduz ainda mais o volume escaneado ao tentar verificar somente eventos de logs desses grupos que correspondam ao valor especificado na consulta para esse índice de campo. Para obter mais informações sobre os índices de campo e como criá-los, consulte [Crie índices de campo para melhorar o desempenho da consulta e reduzir o volume de escaneamento](CloudWatchLogs-Field-Indexing.md).

O uso de `filterIndex` com campos indexados pode ajudar você a consultar grupos de logs que incluem petabytes de dados de log de forma eficiente, limitando o espaço de pesquisa real a grupos e eventos de logs que têm índices de campo.

Por exemplo, suponha que você criou um índice de campos para `IPaddress` em alguns dos grupos de logs da sua conta. Em seguida, você pode criar a consulta a seguir e optar por consultar todos os grupos de logs na conta para encontrar eventos de logs que incluam o valor `198.51.100.0` no campo `IPaddress`.

```
fields @timestamp, @message
| filterIndex IPaddress = "198.51.100.0"
| limit 20
```

O comando `filterIndex` faz com que essa consulta tente ignorar todos os grupos de logs que não estão indexados para `IPaddress`. Além disso, nos grupos de logs indexados, a consulta ignora eventos de logs que têm um campo `IPaddress`, mas não observaram `198.51.100.0` como o valor desse campo.

Use o operador `IN` para expandir os resultados para qualquer um dos vários valores dos campos indexados. O exemplo a seguir encontra eventos de logs que incluem o valor `198.51.100.0` ou `198.51.100.1` no campo `IPaddress`. 

```
fields @timestamp, @message 
| filterIndex IPaddress in ["198.51.100.0", "198.51.100.1"]
| limit 20
```

CloudWatch Os registros fornecem índices de campo padrão para todos os grupos de registros na classe de registros padrão. Os índices de campo padrão ficam disponíveis automaticamente para os seguintes campos: 
+ `@logStream`
+ `@aws.region`
+ `@aws.account`
+ `@source.log`
+ `@data_source_name`
+ `@data_source_type`
+ `@data_format`
+ `traceId`
+ `severityText`
+ `attributes.session.id`

CloudWatch O Logs também fornece índices de campo padrão para determinadas combinações de nome e tipo de fonte de dados. Os índices de campo padrão estão disponíveis automaticamente para as seguintes combinações de nome e tipo de fonte de dados:


| Nome e tipo da fonte de dados | Índices de campo padrão | 
| --- | --- | 
|  `amazon_vpc.flow`  |  `action` `logStatus` `region` `flowDirection` `type`  | 
|  `amazon_route53.resolver_query`  |  `query_type` `transport` `rcode`  | 
|  `aws_waf.access`  |  `action` `httpRequest.country`  | 
|  `aws_cloudtrail.data` ` aws_cloudtrail.management`  |  `eventSource` `eventName` `awsRegion` `userAgent` `errorCode` `eventType` `managementEvent` `readOnly` `eventCategory` `requestId`  | 

Os índices de campo padrão são adicionais aos índices de campo personalizados definidos em sua política. Os índices de campo padrão não são contabilizados em sua [cota de índice de campo](CloudWatchLogs-Field-Indexing-Syntax.md). 

## filterIndex comparado ao filtro
<a name="CWL_QuerySyntax-FilterIndex-Filter"></a>

Para ilustrar a diferença entre `filterIndex` e `filter`, considere os exemplos de consultas a seguir. Suponha que você criou um índice de campo para `IPaddress` e para quatro de seus grupos de logs, mas não para um quinto grupo. A consulta a seguir usando `filterIndex` ignorará a verificação do grupo de logs que não tem o campo indexado. Para cada grupo de logs indexados, ele tenta verificar somente os eventos de logs que tenham o campo indexado e também retorna somente os resultados após a criação do índice do campo.

```
fields @timestamp, @message 
| filterIndex IPaddress = "198.51.100.0" 
| limit 20
```

Por outro lado, se você usar em `filter` vez de `filterIndex` para uma consulta dos mesmos cinco grupos de logs, a consulta tentará verificar não apenas os eventos de logs que contêm o valor nos grupos de logs indexados, mas também examinará o quinto grupo que não está indexado e examinará todos os eventos de logs desse quinto grupo de logs.

```
fields @timestamp, @message 
| filter IPaddress = "198.51.100.0" 
| limit 20
```

# SOURCE
<a name="CWL_QuerySyntax-Source"></a>

Incluir `SOURCE` em uma consulta é uma forma útil de especificar as fontes de and/or dados dos grupos de registros a serem incluídas em uma consulta quando você estiver usando a API AWS CLI ou para criar uma consulta. O `SOURCE` comando é suportado somente na API AWS CLI and, não no CloudWatch console. Ao usar o CloudWatch console para iniciar uma consulta, você usa a interface do console para especificar os grupos de registros. 

Grupos de registros de consulta

Para usar `SOURCE` para especificar os grupos de logs a consultar, é possível usar as seguintes palavras-chave:
+ `namePrefix` executa a consulta em grupos de logs que têm nomes que começam com a string que você especifica. Se você a omitir, todos os grupos de logs serão consultados.

  É possível incluir até cinco prefixos na lista.
+ `accountIdentifier`executa a consulta em grupos de registros na AWS conta especificada. Isso funciona somente quando você executa a consulta em uma conta de monitoramento. Se você a omitir, o padrão é consultar todas as contas de origem vinculadas e a conta de monitoramento atual. Para obter mais informações sobre observabilidade entre contas, consulte observabilidade [CloudWatch entre](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) contas.

  É possível incluir até 20 identificadores de conta na lista.
+ `logGroupClass` executa a consulta em grupos de logs que estão na classe de log especificada, seja Padrão ou Acesso Infrequente. Se você a omitir, será usada a classe de log Padrão. Para obter mais informações sobre classes de logs, consulte [Classes de logs](CloudWatch_Logs_Log_Classes.md).

Como você pode especificar um grande número de grupos de logs para consulta dessa forma, recomendamos que você use `SOURCE` somente em consultas que aproveitem os índices de campo já criados. Para obter mais informações sobre campos de indexação em grupos de logs, consulte [Crie índices de campo para melhorar o desempenho da consulta e reduzir o volume de escaneamento](CloudWatchLogs-Field-Indexing.md)

O exemplo a seguir seleciona todos os grupos de logs da conta. Se for uma conta de monitoramento, os grupos de logs no monitoramento e em todas as contas de origem serão selecionados. Se o número total de grupos de logs exceder 10.000, você verá um erro solicitando reduzir o número de grupos usando um método diferente de seleção de grupos de logs.

```
SOURCE logGroups()
```

O exemplo a seguir seleciona os grupos de logs na conta `111122223333` de origem. Se você iniciar uma consulta em uma conta de monitoramento na observabilidade CloudWatch entre contas, os grupos de registros em todas as contas de origem e na conta de monitoramento serão selecionados por padrão.

```
SOURCE logGroups(accountIdentifiers:['111122223333'])
```

O próximo exemplo seleciona grupos de logs com base em prefixos de nome.

```
SOURCE logGroups(namePrefix: ['namePrefix1', 'namePrefix2'])
```

O exemplo a seguir seleciona todos os grupos de logs da classe de logs de Acesso infrequente. Se você não incluir o identificador `class`, a consulta só se aplicará aos grupos de logs da classe de logs Padrão. 

```
SOURCE logGroups(class: ['INFREQUENT_ACCESS'])
```

O próximo exemplo seleciona grupos de logs na conta 111122223333 que começam com prefixos de nome específicos e estão na classe de registro Padrão. A classe não é mencionada no comando porque Padrão é o valor padrão da classe de log. 

```
SOURCE logGroups(accountIdentifiers:['111122223333'], namePrefix: ['namePrefix1', 'namePrefix2']
```

O exemplo final mostra como usar o `SOURCE` comando com o `start-query` AWS CLI comando.

```
aws logs start-query 
--region us-east-1 
--start-time 1729728200 
--end-time 1729728215 
--query-string "SOURCE logGroups(namePrefix: ['Query']) | fields @message | limit 5"
```

Consultar as fontes de dados

`SOURCE`Para especificar as fontes de dados a serem consultadas, você pode usar a `dataSource` palavra-chave. Você pode incluir até dez fontes de dados na lista.

 O exemplo a seguir seleciona a fonte `amazon_vpc.flow` de dados. 

```
SOURCE dataSource(['amazon_vpc.flow'])
```

 O exemplo a seguir seleciona a fonte de `amazon_vpc.flow` dados e limita os grupos de registros com base em um prefixo de nome de grupo de registros. 

```
SOURCE dataSource(['amazon_vpc.flow']) logGroups(namePrefix: ['namePrefix1'])
```

# pattern
<a name="CWL_QuerySyntax-Pattern"></a>

 Use `pattern` para agrupar automaticamente seus dados de log em padrões. 

Um padrão é uma estrutura de texto compartilhada que se repete entre seus campos de log. Você pode usar `pattern` para revelar tendências emergentes, monitorar erros conhecidos e identificar linhas de registro que ocorrem com frequência ou são de alto custo. CloudWatch O Logs Insights também fornece uma experiência de console que você pode usar para encontrar e analisar melhor os padrões em seus eventos de log. Para obter mais informações, consulte [Análise de padrões](CWL_AnalyzeLogData_Patterns.md).

Como o comando `pattern` identifica padrões comuns automaticamente, você pode usá-lo como ponto de partida para pesquisar e analisar os logs. Você também pode combinar `pattern` com os comandos ` filter`, ` parse`, ou ` sort` para identificar padrões em consultas mais ajustadas. 

**Entrada do comando pattern**

 O comando `pattern` espera uma das seguintes entradas: o campo `@message`, um campo extraído criado usando o comando ` parse` ou uma string manipulada usando uma ou mais [Funções string](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-string-functions). 

Se o CloudWatch Logs não conseguir inferir o tipo de dados que um token dinâmico representa, exibi-o como <Token- *number* > e *number* indica onde esse token aparece no padrão, em comparação com os outros tokens dinâmicos.

Exemplos comuns de tokens dinâmicos incluem códigos de erro, endereços IP, registros de data e hora e solicitações. IDs

**Saída do comando pattern**

 O comando `pattern` produzirá a seguinte saída:
+ `@pattern`: uma estrutura de texto compartilhada que se repete entre seus campos de eventos de log. Os campos que variam dentro de um padrão, como um ID da solicitação ou um timestamp, são representados por *tokens*. Se o CloudWatch Logs puder determinar o tipo de dados que um token dinâmico representa, ele exibirá o token como`<string-number>`. *string*É uma descrição do tipo de dados que o token representa. *number*Mostra onde esse token aparece no padrão, em comparação com os outros tokens dinâmicos.

  CloudWatch O Logs atribui a parte da string do nome com base na análise do conteúdo dos eventos de log que a contêm.

  Se o CloudWatch Logs não conseguir inferir o tipo de dados que um token dinâmico representa, exibi-o como <Token- *number* > e *number* indica onde esse token aparece no padrão, em comparação com os outros tokens dinâmicos.

  Por exemplo, `[INFO] Request time: <Time-1> ms` é uma saída potencial para a mensagem de log `[INFO] Request time: 327 ms`.
+ `@ratio`: a proporção de eventos de log de um período selecionado e grupos de registros especificados que correspondem a um padrão identificado. Por exemplo, se metade dos eventos de log nos grupos de logs e no período de tempo selecionados corresponderem ao padrão, `@ratio` retornará `0.50`
+ `@sampleCount`: o número de eventos de log de um período selecionado e grupos de logs especificados que correspondem a um padrão identificado.
+ `@severityLabel`: a severidade ou o nível do log que indica o tipo de informação contida em um log. Por exemplo, `Error`, `Warning`, `Info` ou `Debug`.

**Exemplos**

O comando a seguir identifica logs com estruturas semelhantes em grupos de logs especificados no intervalo de tempo selecionado, agrupando-os por padrão e contagem

```
pattern @message
```

O comando `pattern` pode ser usado em combinação com o comando ` filter`

```
filter @message like /ERROR/
| pattern @message
```

O comando `pattern` pode ser usado com os comandos ` parse` e ` sort`

```
filter @message like /ERROR/
| parse @message 'Failed to do: *' as cause
| pattern cause
| sort @sampleCount asc
```

# diferença
<a name="CWL_QuerySyntax-Diff"></a>

Ele compara os eventos de log encontrados no período solicitado com os eventos de log de um período anterior de igual duração. Assim, você pode procurar tendências e descobrir se determinados eventos de log são novos.

Adicione um modificador ao comando `diff` para especificar o período com o qual deseja comparar:
+ `diff` compara os eventos de log no intervalo de tempo atualmente selecionado com os eventos de log do intervalo de tempo imediatamente anterior.
+ `diff previousDay` compara os eventos de log no intervalo de tempo atualmente selecionado com os eventos de log do mesmo intervalo de tempo no dia anterior.
+ `diff previousWeek` compara os eventos de log no intervalo de tempo atualmente selecionado com os eventos de log do mesmo intervalo de tempo na semana anterior.
+ `diff previousMonth` compara os eventos de log no intervalo de tempo atualmente selecionado com os eventos de log do mesmo intervalo de tempo no mês anterior.

Para obter mais informações, consulte [Compare (diff) com intervalos de tempo anteriores](CWL_AnalyzeLogData_Compare.md).

# parse
<a name="CWL_QuerySyntax-Parse"></a>

 Use `parse` para extrair dados de um campo de log e criar um campo extraído que pode ser processado na consulta. **`parse`** é compatível tanto com o modo glob usando curingas quanto com as expressões regulares. Para obter informações sobre a sintaxe das expressões regulares, consulte [Sintaxe de expressões regulares (regex) compatíveis](FilterAndPatternSyntax.md#regex-expressions).

 Você pode analisar campos JSON aninhados com uma expressão regular. 

**Exemplo: análise de um campo JSON aninhado**

 O trecho de código mostra como analisar um evento de logs JSON que foi nivelado durante a ingestão. 

```
{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}
```

 O trecho de código mostra uma consulta com uma expressão regular que extrai os valores de `fieldsA` e `fieldsB` para criar os campos extraídos `fld` e `array`. 

```
parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array
```

**Grupos de captura nomeados**

Quando você usa **`parse`** com uma expressão regular, pode usar grupos de captura nomeados para capturar um padrão para um campo. A sintaxe é `parse @message (?<Name>pattern)`

O exemplo a seguir usa um grupo de captura em um log de fluxo da VPC para extrair o ENI para um campo denominado `NetworkInterface`.

```
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
```

**nota**  
 Os eventos de logs JSON são nivelados durante a ingestão. Atualmente, não é possível analisar campos JSON aninhados com uma expressão global. Você só pode analisar eventos de logs JSON que incluam no máximo 200 campos de eventos de logs. Ao analisar campos JSON aninhados, você deve formatar a expressão regular em sua consulta para que corresponda ao formato do seu evento de logs JSON. 

## Exemplos do comando de análise
<a name="CWL_QuerySyntax-parse-examples"></a>

**Use uma expressão de glob para extrair os campos `@user`, `@method` e `@latency` do campo de log `@message` e retornar a latência média para cada combinação exclusiva de `@method` e `@user`.** 

```
parse @message "user=*, method:*, latency := *" as @user,
    @method, @latency | stats avg(@latency) by @method,
    @user
```

**Use uma expressão regular para extrair os campos `@user2`, `@method2` e `@latency2` do campo de log `@message` e retornar a latência média para cada combinação exclusiva de `@method2` e `@user2`.**

```
parse @message /user=(?<user2>.*?), method:(?<method2>.*?),
    latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, 
    @user2
```

**Extrai os campos `loggingTime`, `loggingType` e `loggingMessage`, aplica o filtro para eventos de logs que contêm strings `ERROR` ou `INFO` e exibe apenas os campos `loggingMessage` e `loggingType` para eventos que contêm uma string `ERROR`.**

```
FIELDS @message
    | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage
    | FILTER loggingType IN ["ERROR", "INFO"]
    | DISPLAY loggingMessage, loggingType = "ERROR" as isError
```

# sort
<a name="CWL_QuerySyntax-Sort"></a>

 Use `sort` para exibir eventos de log em ordem crescente (`asc`) ou decrescente (`desc`) por um campo especificado. Use-o com o comando `limit` para criar consultas de “N principais” ou “N inferiores”. 

O algoritmo de classificação é uma versão atualizada da classificação natural. Se você classificar em ordem crescente, a lógica a seguir será usada.
+  Todos os valores não numéricos vêm antes de todos os valores numéricos. *Valores numéricos* são valores que só incluem números, não uma mistura de números e outros caracteres.
+ Para valores não numéricos, o algoritmo agrupa caracteres numéricos consecutivos e caracteres alfabéticos consecutivos em blocos separados para comparação. Ele ordena as partes não numéricas pelos valores Unicode e as partes numéricas primeiro pelo tamanho e depois pelo valor numérico.

Para obter mais informações sobre a ordem Unicode, consulte [Lista de caracteres Unicode](https://en.wikipedia.org/wiki/List_of_Unicode_characters).

Por exemplo, o resultado a seguir é classificado na ordem crescente.

```
!:	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> sorted by unicode order
#
*%04
0#	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Alphanumeric starting with numbers
5A
111A   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Starts with more digits than 5A, so it sorted to be later than 5A
2345_
@	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2345 is compared with @ in the unicode order, 
@_
A	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Values starting with letters
A9876fghj
a12345hfh
0	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Number values
01
1
2
3
```

Se você classificar na ordem decrescente, os resultados da classificação serão invertidos.

Por exemplo, a consulta a seguir de logs de fluxo da Amazon VPC localiza as 15 principais transferências de pacotes entre hosts.

```
stats sum(packets) as packetsTransferred by srcAddr, dstAddr
    | sort packetsTransferred  desc
    | limit 15
```

# stats
<a name="CWL_QuerySyntax-Stats"></a>

 Use `stats` para criar visualizações dos seus dados de log, como gráficos de barras, gráficos de linhas e gráficos de áreas empilhadas. Isso ajuda você a identificar padrões em seus dados de registro com mais eficiência. CloudWatch O Logs Insights gera visualizações para consultas que usam a `stats` função e uma ou mais funções de agregação. 

Por exemplo, a consulta a seguir em um grupo de logs do Route 53 retorna visualizações que mostram a distribuição dos registros do Route 53 por hora, por tipo de consulta.

```
stats count(*) by queryType, bin(1h)
```

Todas essas consultas podem produzir gráficos de barras. Se sua consulta usar a função `bin()` para agrupar os dados por um campo ao longo do tempo, você também poderá ver gráficos de linhas e gráficos de áreas empilhadas.

As unidades e abreviações de tempo a seguir são compatíveis com a função `bin`. Para todas as unidades e abreviações que incluem mais de um caractere, é permitido adicionar "s" para formar o plural. Assim, ambos `hr` e `hrs` funcionam para especificar horas.
+ `millisecond` `ms` `msec`
+ `second` `s` `sec`
+ `minute` `m` `min`
+ `hour` `h` `hr`
+ `day` `d` 
+ `week` `w` 
+ `month` `mo` `mon`
+ `quarter` `q` `qtr`
+ `year` `y` `yr`

**Topics**
+ [Visualizar dados de séries temporais](#CWL_Insights-Visualizing-TimeSeries)
+ [Visualizar dados de log agrupados por campos](#CWL_Insights-Visualizing-ByFields)
+ [Use vários comandos de estatísticas em uma única consulta](#CWL_QuerySyntax-stats-multi)
+ [Funções para uso com estatísticas](#CWL_QuerySyntax-stats-functions)

## Visualizar dados de séries temporais
<a name="CWL_Insights-Visualizing-TimeSeries"></a>

As visualizações de séries temporais funcionam para consultas com as seguintes características:
+ A consulta contém uma ou mais funções de agregação. Para obter mais informações, consulte [Aggregation Functions in the Stats Command](#CWL_Insights_Aggregation_Functions).
+ A consulta usa a função `bin()` para agrupar os dados por um campo. 

Essas consultas podem produzir gráficos de linha, gráficos de áreas empilhadas, gráficos de barras e gráficos de pizza. 

**Exemplos**

Para obter um tutorial completo, consulte [Tutorial: Executar uma consulta que produz uma visualização de séries temporais](CWL_AnalyzeLogData_VisualizationQuery.md). 

Aqui estão mais exemplos de consultas que funcionam para visualização de séries temporais.

A consulta a seguir gera uma visualização dos valores médios do campo `myfield1`, com um ponto de dados criado a cada cinco minutos. Cada ponto de dados é a agregação das médias dos valores `myfield1` dos logs dos últimos cinco minutos.

```
stats avg(myfield1) by bin(5m)
```

A consulta a seguir gera uma visualização dos três valores com base em campos diferentes, com um ponto de dados criado a cada cinco minutos. A visualização é gerada porque a consulta contém funções de agregação e usa `bin()` como o campo de agrupamento.

```
stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)
```

**Restrições do gráfico de linhas e do gráfico de áreas empilhadas**

Consultas que agregam informações de entrada de log, mas que não usam a função `bin()`, podem gerar gráficos de barras. No entanto, as consultas não podem gerar gráficos de linha ou gráficos de áreas empilhadas. Para obter mais informações sobre esses tipos de políticas, consulte [Visualizar dados de log agrupados por campos](#CWL_Insights-Visualizing-ByFields).

## Visualizar dados de log agrupados por campos
<a name="CWL_Insights-Visualizing-ByFields"></a>

É possível produzir gráficos de barras para consultas que usam a função `stats` e uma ou mais funções de agregação. Para obter mais informações, consulte [Aggregation Functions in the Stats Command](#CWL_Insights_Aggregation_Functions).

Para ver a visualização, execute sua consulta. Depois, escolha a guia **Visualization**(Visualização), selecione a seta ao lado de **Line**(Linha) e escolha **Bar**(Barra). As visualizações estão limitadas a até 100 barras no gráfico de barras.

**Exemplos**

Para obter um tutorial completo, consulte [Tutorial: Executar uma consulta que produz uma visualização agrupada por campos de log](CWL_AnalyzeLogData_VisualizationFieldQuery.md). Os parágrafos a seguir incluem mais consultas de exemplo para a visualização por campos.

A consulta de log de fluxo da VPC a seguir localiza o número médio de bytes transferidos por sessão para cada endereço de destino.

```
stats avg(bytes) by dstAddr
```

Também é possível produzir um gráfico que inclua mais de uma barra para cada valor resultante. Por exemplo, a consulta de log de fluxo da VPC a seguir localiza o número médio e máximo de bytes transferidos por sessão para cada endereço de destino.

```
stats avg(bytes), max(bytes) by dstAddr
```

A consulta a seguir localiza o número de logs de consulta do Amazon Route 53 para cada tipo de consulta.

```
stats count(*) by queryType
```

## Use vários comandos de estatísticas em uma única consulta
<a name="CWL_QuerySyntax-stats-multi"></a>

Você pode usar até dois comandos `stats` em uma única consulta. Isso permite executar uma agregação adicional na saída da primeira agregação.

**Exemplo: consulta com dois comandos `stats`**

Por exemplo, a consulta a seguir localiza primeiro o volume total de tráfego em compartimentos de cinco minutos e, em seguida, calcula o volume de tráfego mais alto, mais baixo e médio entre esses compartimentos de cinco minutos.

```
FIELDS strlen(@message) AS message_length
| STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m)
| STATS max(logs_mb) AS peak_ingest_mb, 
        min(logs_mb) AS min_ingest_mb, 
        avg(logs_mb) AS avg_ingest_mb
```

**Exemplo: combine vários comandos de estatísticas com outras funções, como `filter`, `fields` e `bin`**

Você pode combinar dois comandos `stats` com outros comandos, como `filter` e `fields`, em uma única consulta. Por exemplo, a consulta a seguir localiza o número de endereços IP distintos nas sessões e localiza o número de sessões por plataforma do cliente, filtra esses endereços IP e, por fim, localiza a média de solicitações de sessão por plataforma do cliente.

```
STATS count_distinct(client_ip) AS session_ips, 
      count(*) AS requests BY session_id, client_platform
| FILTER session_ips > 1
| STATS count(*) AS multiple_ip_sessions, 
        sum(requests) / count(*) AS avg_session_requests BY client_platform
```

Você pode usar as funções `bin` e `dateceil` em consultas com vários comandos `stats`. Por exemplo, a consulta a seguir primeiro combina mensagens em blocos de cinco minutos, depois agrega esses blocos de cinco minutos em blocos de dez minutos e calcula os volumes de tráfego mais altos, mais baixos e médios dentro de cada bloco de dez minutos.

```
FIELDS strlen(@message) AS message_length
| STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t
| STATS max(logs_mb) AS peak_ingest_mb, 
        min(logs_mb) AS min_ingest_mb,
        avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)
```

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

Uma consulta pode ter no máximo dois comandos `stats`. Não é possível alterar esta cota. 

Se você usar um comando `sort` ou `limit`, ele deverá aparecer após o segundo comando `stats`. Se estiver antes do segundo comando `stats`, a consulta não é válida.

Quando uma consulta tem dois comandos `stats`, a exibição dos resultados parciais da consulta só começará quando a primeira agregação `stats` for concluída.

No segundo comando `stats` de uma única consulta, você pode se referir somente aos campos definidos no primeiro comando `stats`. Por exemplo, a consulta a seguir não é válida porque o campo `@message` não estará disponível após a primeira agregação `stats`.

```
FIELDS @message
| STATS SUM(Fault) by Operation
# You can only reference `SUM(Fault)` or Operation at this point
| STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message
```

Todos os campos que você referenciar após o primeiro comando `stats` devem ser definidos nesse primeiro comando `stats`.

```
STATS sum(x) as sum_x by y, z
| STATS max(sum_x) as max_x by z
# You can only reference `max(sum_x)`, max_x or z at this point
```

**Importante**  
A função `bin` sempre usa implicitamente o campo `@timestamp`. Isso significa que você não pode usar `bin` no segundo comando `stats` sem usar o primeiro comando `stats` para propagar o campo `timestamp`. Por exemplo, a consulta a seguir não é válida.  

```
FIELDS strlen(@message) AS message_length
 | STATS sum(message_length) AS ingested_bytes BY @logStream
 | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field
```
Em vez disso, defina o campo `@timestamp` no primeiro comando `stats` e, em seguida, você poderá usá-lo com `dateceil` no segundo comando `stats`, como no exemplo a seguir.  

```
FIELDS strlen(@message) AS message_length
 | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream
 | STATS avg(ingested_bytes) BY dateceil(@t, 5m)
```

## Funções para uso com estatísticas
<a name="CWL_QuerySyntax-stats-functions"></a><a name="CWL_Insights_Aggregation_Functions"></a>

CloudWatch O Logs Insights suporta funções de agregação de estatísticas e funções de não agregação de estatísticas.

 Use funções de agregação de estatísticas no comando `stats` e como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|  `avg(fieldName: NumericLogField)` |  número |  A média dos valores no campo especificado.  | 
|  `count()` `count(fieldName: LogField)` |  número |  Faz a contagem dos eventos de log. `count()` (ou `count(*)`) conta todos os eventos retornados pela consulta, e o `count(fieldName)` conta todos os registros que incluam o nome do campo especificado.  | 
|  `count_distinct(fieldName: LogField)` |  número |  Retorna o número de valores exclusivos do campo. Se o campo tiver cardinalidade muito alta (muitos valores exclusivos), o valor retornado por `count_distinct` será apenas uma aproximação.  | 
|  `max(fieldName: LogField)` |  LogFieldValue |  O máximo dos valores desse campo de log nos logs consultados.  | 
|  `min(fieldName: LogField)` |  LogFieldValue |  O mínimo dos valores desse campo de log nos logs consultados.  | 
|  `pct(fieldName: LogFieldValue, percent: number)` |  LogFieldValue |  Um percentil indica a posição relativa de um valor no conjunto de dados. Por exemplo, `pct(@duration, 95)` retorna o valor `@duration` em que 95% dos valores de `@duration` são menores que esse valor e 5% são maiores que esse valor.  | 
|  `stddev(fieldName: NumericLogField)` |  número |  O desvio padrão dos valores no campo especificado.  | 
|  `sum(fieldName: NumericLogField)` |  número |  A soma dos valores no campo especificado.  | 

 **Funções de estatísticas de não agregação** <a name="CWL_Insights_Non-Aggregation_Functions"></a>

 Use funções de não agregação no comando `stats` e como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|  `earliest(fieldName: LogField)` |  LogField |  Retorna o valor de `fieldName` do evento do log que tem o primeiro time stamp nos logs consultados.  | 
|  `latest(fieldName: LogField)` |  LogField |  Retorna o valor de `fieldName` do evento do log que tem o último time stamp nos logs consultados.  | 
|  `sortsFirst(fieldName: LogField)` |  LogField |  Retorna o valor do `fieldName` que aparece em primeiro lugar nos logs consultados.  | 
|  `sortsLast(fieldName: LogField)` |  LogField |  Retorna o valor do `fieldName` que aparece em último lugar nos logs consultados.  | 

# limite
<a name="CWL_QuerySyntax-Limit"></a>

 Use `limit` para especificar o número de eventos de log que você deseja que sua consulta retorne. Se você omitir `limit`, a consulta retornará até 10.000 eventos de log nos resultados. 

Por exemplo, o exemplo a seguir retorna apenas os 25 eventos de log mais recentes

```
fields @timestamp, @message | sort @timestamp desc | limit 25
```

# dedup
<a name="CWL_QuerySyntax-Dedup"></a>

 Use `dedup` para remover resultados duplicados com base em valores específicos em campos que você especifica. É possível usar `dedup` com um ou mais campos. Se você especificar um campo com `dedup`, apenas um evento de log será retornado para cada valor exclusivo desse campo. Se especificar vários campos, um evento de log será retornado para cada combinação exclusiva de valores desses campos.

As duplicatas serão descartadas em ordem de classificação, e apenas o primeiro resultado dessa ordem será mantido. Convém classificar os resultados antes de os submeter ao comando `dedup`. Se os resultados não forem classificados antes de serem executados por `dedup`, a ordem de classificação decrescente padrão `@timestamp` será usada. 

Valores nulos não são considerados duplicatas para avaliação. Eventos de log com valores nulos para qualquer um dos campos especificados são mantidos. Para eliminar campos com valores nulos, use **`filter`** com a função `isPresent(field)`. 

O único comando de consulta que você pode usar em uma consulta após o comando `dedup` é `limit`.

Quando você usa `dedup` em uma consulta, o console exibe uma mensagem como **Mostrar registros X de Y**, em que X é o número de resultados desduplicados e Y é o número total de registros correspondidos antes da desduplicação. Isso indica que os registros duplicados foram removidos e não significa que faltam dados.

 **Exemplo: visualizar somente o evento de log mais recente de cada valor exclusivo do campo chamado `server`** 

 O exemplo a seguir mostra os campos `timestamp`, `server`, `severity` e `message` somente para o evento mais recente de cada valor exclusivo de `server`. 

```
fields @timestamp, server, severity, message 
| sort @timestamp desc 
| dedup server
```

Para ver mais exemplos de consultas do CloudWatch Logs Insights, consulte[Consultas gerais](CWL_QuerySyntax-examples.md#CWL_QuerySyntax-examples-general). 

# unmask
<a name="CWL_QuerySyntax-Unmask"></a>

 Use `unmask` para exibir todo o conteúdo de um evento de log que tenha algum conteúdo mascarado devido à política de proteção de dados. Para usar este comando, você deve ter a permissão `logs:Unmask`.

Para mais informações sobre a proteção de dados nos grupos de logs, acesse [Ajude a proteger dados de log confidenciais com mascaramento](mask-sensitive-log-data.md). 

# unnest
<a name="CWL_QuerySyntax-Unnest"></a>

 Use `unnest` para nivelar uma lista usada como entrada para gerar vários registros com um único registro para cada elemento na lista. Com base no número de itens que um campo contém, esse comando descarta o registro atual e gera novos registros. Cada registro inclui o `unnested_field`, que representa um item. Todos os outros campos vêm do registro original. 

 A entrada para `unnest` é `LIST`, que vem da função `jsonParse`. Para obter mais informações, consulte [Tipos de estrutura](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-structure-types). Quaisquer outros tipos, como `MAP`, `String` e `numbers`, são tratados como uma lista com um item no `unnest`. 

**Estrutura do comando**  
 O exemplo a seguir descreve o formato desse comando. 

```
unnest field into unnested_field
```

**Consulta de exemplo**  
 O exemplo a seguir analisa uma string de objeto JSON e expande uma lista de eventos de campo. 

```
fields jsonParse(@message) as json_message 
| unnest json_message.events into event
| display event.name
```

O evento de logs para essa consulta de exemplo pode ser uma string JSON da seguinte forma:

```
{
   "events": [
        {
            "name": "exception"
        },
        {
            "name": "user action"
        }
   ]
}
```

Nesse caso, a consulta de amostra produz dois registros no resultado da consulta, um com `event.name` como `exception` e outro com `event.name` como **ação do usuário**.

**Consulta de exemplo**  
 O exemplo a seguir nivela uma lista e depois filtra os itens. 

```
fields jsonParse(@message) as js 
| unnest js.accounts into account 
| filter account.type = "internal"
```

**Consulta de exemplo**  
 O exemplo a seguir nivela uma lista para agregação. 

```
fields jsonParse(trimmedData) as accounts 
| unnest accounts into account 
| stats sum(account.droppedSpans) as n by account.accountId 
| sort n desc 
| limit 10
```

# lookup
<a name="CWL_QuerySyntax-Lookup"></a>

Use `lookup` para enriquecer os resultados da consulta com dados de referência de uma tabela de pesquisa. Uma tabela de pesquisa contém dados CSV que você carrega para o Amazon CloudWatch Logs. Quando uma consulta é executada, o `lookup` comando combina um campo em seus eventos de log com um campo na tabela de pesquisa e acrescenta os campos de saída especificados aos resultados.

Use tabelas de pesquisa para cenários de enriquecimento de dados, como mapear detalhes do usuário IDs para o usuário, códigos do produto para informações do produto ou códigos de erro para descrições de erros.

## Criação e gerenciamento de tabelas de pesquisa
<a name="CWL_QuerySyntax-Lookup-tables"></a>

Antes de usar o `lookup` comando em uma consulta, você deve criar uma tabela de pesquisa. Você pode criar e gerenciar tabelas de pesquisa a partir do CloudWatch console ou usando a API Amazon CloudWatch Logs.

**Para criar uma tabela de pesquisa (console)**  


1. Abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, escolha **Configurações** e, em seguida, escolha a guia **Registros**.

1. Role até **Pesquisar tabelas** e escolha **Gerenciar**.

1. Escolha **Criar tabela de pesquisa**.

1. Insira um nome para a tabela de pesquisa. O nome só pode conter caracteres alfanuméricos, hífens e sublinhados.

1. (Opcional) Insira uma descrição.

1. Faça upload de um arquivo CSV. O arquivo deve incluir uma linha de cabeçalho com nomes de colunas, usar a codificação UTF-8 e não exceder 10 MB.

1. (Opcional) Especifique uma AWS KMS chave para criptografar os dados da tabela.

1. Escolha **Criar**.

Depois de criar uma tabela de pesquisa, você pode visualizá-la no editor de consultas do CloudWatch Logs Insights. Escolha a guia **Pesquisar tabelas** para procurar tabelas disponíveis e seus campos.

Para atualizar uma tabela de pesquisa, selecione a tabela e escolha **Ações**, **Atualizar**. Faça upload de um novo arquivo CSV para substituir todo o conteúdo existente. Para excluir uma tabela de pesquisa, escolha **Ações**, **Excluir**.

**nota**  
Você pode criar até 100 tabelas de pesquisa por conta por Região da AWS. Os arquivos CSV podem ter até 10 MB. Você também pode gerenciar tabelas de pesquisa usando a API Amazon CloudWatch Logs. Para obter mais informações, consulte [CreateLookupTable](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLookupTable.html)a *Referência da API Amazon CloudWatch Logs*.

**nota**  
Se a tabela de pesquisa for criptografada com uma chave KMS, o chamador deverá ter a `kms:Decrypt` permissão na chave (a chave KMS usada para criptografar a tabela de pesquisa) para usar a `StartQuery` API com uma consulta que faça referência a essa tabela de pesquisa. Para obter mais informações, consulte [Criptografe tabelas de pesquisa em CloudWatch registros usando AWS Key Management Service](encrypt-lookup-tables-kms.md).

## Sintaxe de consulta para pesquisa
<a name="CWL_QuerySyntax-Lookup-syntax"></a>

**Estrutura do comando**  
O seguinte mostra o formato desse comando.

```
lookup table lookup-field as log-field [,...] output-mode output-field[,...]
```

O comando usa os seguintes argumentos:
+ `table`— O nome da tabela de pesquisa a ser usada.
+ `lookup-field`— O campo na tabela de pesquisa a ser comparado.
+ `log-field`— O campo em seu registro de eventos correspondente. A correspondência é exata e diferencia maiúsculas de minúsculas.
+ `output-mode`— Especifique `OUTPUT` para adicionar os campos de saída aos resultados. Se um campo com o mesmo nome já existir no evento de log, ele será substituído.
+ `output-field`— Um ou mais campos da tabela de pesquisa para adicionar aos resultados.

**Exemplo: enriqueça eventos de registro com detalhes do usuário**  
Suponha que você tenha um grupo de registros com eventos que contêm um `id` campo e uma tabela de pesquisa chamada `user_data` com colunas `id` `name``email`,, `department` e. A consulta a seguir enriquece cada evento de log com o nome do usuário, e-mail e departamento da tabela de pesquisa.

```
fields action, status, name, email, department
| lookup user_data id OUTPUT name, email, department
```

**Exemplo: Use a pesquisa com agregação**  
Você pode usar campos de saída de pesquisa com funções de agregação. A consulta a seguir enriquece os eventos de log com detalhes do usuário e, em seguida, conta os eventos agrupados por endereço de e-mail.

```
fields user_id, action, username, email, department
| lookup user_data user_id OUTPUT username, email, department
| stats count(*) by email
```

**Exemplo: Use a pesquisa com filtro**  
Você pode filtrar os resultados com base nos campos retornados pela pesquisa. A consulta a seguir enriquece os eventos de registro e depois filtra para mostrar somente os eventos de um departamento específico.

```
fields user_id, action
| lookup user_data user_id OUTPUT username, email, department
| filter department = "Engineering"
```

# Funções booleanas, de comparação, numéricas e de data e hora, entre outras
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch O Logs Insights oferece suporte a muitas outras operações e funções em consultas, conforme explicado nas seções a seguir. 

**Topics**
+ [Operadores aritméticos](#CWL_QuerySyntax-operations-arithmetic)
+ [Operadores booleanos](#CWL_QuerySyntax-operations-Boolean)
+ [Operadores de comparação](#CWL_QuerySyntax-operations-comparison)
+ [Operadores numéricos](#CWL_QuerySyntax-operations-numeric)
+ [Tipos de estrutura](#CWL_QuerySyntax-structure-types)
+ [Funções de data e hora](#CWL_QuerySyntax-datetime)
+ [Funções gerais](#CWL_QuerySyntax-general-functions)
+ [Funções JSON](#CWL_QuerySyntax-json-functions)
+ [Funções de string de endereço IP](#CWL_QuerySyntax-IPaddress-functions)
+ [Funções de string](#CWL_QuerySyntax-string-functions)

## Operadores aritméticos
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Os operadores aritméticos aceitam tipos de dados numéricos como argumentos e retornam resultados numéricos. Use operadores aritméticos nos comandos `filter` e `fields` e como argumentos de outras funções. 


| Operation | Description | 
| --- | --- | 
|  `a + b` |  Adição  | 
|  `a - b` |  Subtração  | 
|  `a * b` |  Multiplicação  | 
|  `a / b` |  Divisão  | 
|  `a ^ b` |   Exponenciação (`2 ^ 3` retorna `8`)   | 
|  `a % b` |   Resto ou módulo (`10 % 3` retorna `1`)   | 

## Operadores booleanos
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Use os operadores booleanos `and`, `or` e `not`. 

**nota**  
 Use operadores booleanos somente em funções que retornam um valor de **TRUE** ou **FALSE**. 

## Operadores de comparação
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Os operadores de comparação aceitam todos os tipos de dados como argumentos e retornam um resultado booliano. Use operadores de comparação no comando `filter` e como argumentos de outras funções. 


| Operador | Description | 
| --- | --- | 
|   `=`   |   Equal   | 
|   `!=`   |   Not equal   | 
|   `<`   |   Menor que   | 
|  `>` |   Maior que   | 
|  `<=` |   Menor ou igual a   | 
|   `>=`   |   Maior ou igual a   | 

## Operadores numéricos
<a name="CWL_QuerySyntax-operations-numeric"></a>

 As operações numéricas aceitam tipos de dados numéricos como argumentos e retornam resultados numéricos. Use operadores numéricos nos comandos `filter` e `fields` e como argumentos de outras funções. 


| Operation | Tipo de resultado | Description | 
| --- | --- | --- | 
|   `abs(a: number)`   |   número   |   Valor absoluto   | 
|   `ceil(a: number)`   |   número   |   Arredonde para o máximo (o menor inteiro maior que o valor de `a`)   | 
|   `floor(a: number)`   |  número |   Arredonde para o mínimo (o maior inteiro menor que o valor de `a`)   | 
|   `greatest(a: number, ...numbers: number[])`   |   número   |   Retorna o maior valor   | 
|   `least(a: number, ...numbers: number[])`   |  número |   Retorna o menor valor   | 
|   `log(a: number)`   |   número   |   Log natural   | 
|   `sqrt(a: number)`   |   número   |   Raiz quadrada   | 

## Tipos de estrutura
<a name="CWL_QuerySyntax-structure-types"></a>

 Um mapa ou lista é um tipo de estrutura no CloudWatch Logs Insights que permite acessar e usar atributos para consultas. 

**Exemplo: para obter um mapa ou uma lista**  
 Use `jsonParse` para analisar um campo que é uma string json em um mapa ou uma lista. 

```
fields jsonParse(@message) as json_message
```

**Exemplo: para acessar atributos**  
 Use o operador de acesso por ponto (map.attribute) para acessar itens em um mapa. Se um atributo em um mapa contiver caracteres especiais, use crases para delimitar o nome do atributo (map.attributes). `special.char`). 

```
fields jsonParse(@message) as json_message
| stats count() by json_message.status_code
```

 Use o operador de acesso por colchetes (list[index]) para recuperar um item em uma posição específica na lista. 

```
fields jsonParse(@message) as json_message
| filter json_message.users[1].action = "PutData"
```

 Coloque caracteres especiais entre crases (``) quando caracteres especiais estiverem presentes no nome da chave. 

```
fields jsonParse(@message) as json_message
| filter json_message.`user.id` = "123"
```

**Exemplo: resultados vazios**  
 Mapas e listas são tratados como nulos para funções de string, número e data e hora. 

```
fields jsonParse(@message) as json_message
| display toupper(json_message)
```

 A comparação do mapa e da lista com quaisquer outros campos resulta em `false`. 

**nota**  
 O uso de mapa e lista em `dedup`, `pattern`, `sort` e `stats` não é suportado. 

## Funções de data e hora
<a name="CWL_QuerySyntax-datetime"></a>

 **Funções de data e hora** 

 Use funções de data e hora nos comandos `fields` e `filter` e como argumentos de outras funções. Use essas funções para criar buckets de tempo para consultas com funções de agregação. Use períodos que consistam em um número e uma das seguintes abreviaturas:
+ `ms` para milissegundos 
+ `s` para segundos 
+ `m` para minutos 
+ `h` para horas 

 Por exemplo, `10m` é 10 minutos, e `1h` é uma hora. 

**nota**  
Use a unidade de tempo mais apropriada para a função de data e hora. CloudWatch Os registros limitam sua solicitação de acordo com a unidade de tempo que você escolher. Por exemplo, o limite máximo será 60 para qualquer solicitação que use `s`. Então, se você especificar`bin(300s)`, o CloudWatch Logs realmente implementa isso como 60 segundos, porque 60 é o número de segundos em um minuto, então o CloudWatch Logs não usará um número maior que 60 com`s`. Para criar um bucket de 5 minutos, use `bin(5m)` em vez disso.  
O limite para `ms` é 1.000, o limite para `s` e `m` é 60 e o limite para `h` é 24.

A tabela a seguir contém uma lista das diferentes funções de data e hora que você pode usar nos comandos de consulta. A tabela lista o tipo de resultado de cada função e contém uma descrição de cada função. 

**dica**  
 Quando você cria um comando de consulta, é possível usar o seletor de intervalo de tempo para selecionar um período que deseja consultar. Por exemplo, você pode definir um período entre intervalos de 5 e 30 minutos; intervalos de 1, 3 e 12 horas; ou um período personalizado. Você também pode definir períodos entre datas específicas. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Timestamp |  Arredonda o valor de `@timestamp` para o período indicado e trunca. Por exemplo, `bin(5m)` arredonda o valor de `@timestamp` para os 5 minutos mais próximos. Você pode usar isso para agrupar várias entradas de log em uma consulta. O seguinte exemplo conta a quantidade de exceções por hora: <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> As unidades e abreviações de tempo a seguir são compatíveis com a função `bin`. Para todas as unidades e abreviações que incluem mais de um caractere, é permitido adicionar "s" para formar o plural. Assim, ambos `hr` e `hrs` funcionam para especificar horas. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Timestamp |  Trunca o time stamp para o período indicado. Por exemplo, `datefloor(@timestamp, 1h)` trunca todos os valores de `@timestamp` no final.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Timestamp |  Arredonda o time stamp para o período indicado e trunca. Por exemplo, `dateceil(@timestamp, 1h)` trunca todos os valores de `@timestamp` no início.  | 
|  `fromMillis(fieldName: number)` |  Timestamp |  Interpreta o campo de entrada como o número de milissegundos desde a epoch do Unix e o converte em um time stamp.  | 
|  `toMillis(fieldName: Timestamp)` |  número |  Converte o time stamp encontrado no campo nomeado em um número que representa os milissegundos desde a epoch do Unix. Por exemplo, `toMillis(@timestamp)` converte o carimbo de data/hora `2022-01-14T13:18:031.000-08:00` para `1642195111000`.  | 
|  `now()`  |  número  |  Retorna a hora em que o processamento da consulta foi iniciado, em segundos de época. Essa função não usa argumentos. Você pode usá-la para filtrar os resultados da consulta de acordo com a hora atual. Por exemplo, a consulta a seguir gera todos os erros 4xx das últimas duas horas: <pre>parse @message "Status Code: *;" as statusCode\n <br />| filter statusCode >= 400 and statusCode <= 499  \n <br />| filter toMillis(@timestamp) >= (now() * 1000 - 7200000)</pre> O exemplo a seguir retorna todas as entradas de log das últimas cinco horas que contêm a palavra `error` ou `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**nota**  
 Atualmente, o CloudWatch Logs Insights não oferece suporte à filtragem de registros com carimbos de data/hora legíveis por humanos. 

## Funções gerais
<a name="CWL_QuerySyntax-general-functions"></a>

 **Funções gerais** 

 Use funções gerais nos comandos `fields` e `filter` e como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Booleano   |   Retorna `true` se o campo existir   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Retorna o primeiro valor não nulo da lista   | 

## Funções JSON
<a name="CWL_QuerySyntax-json-functions"></a>

 **Funções JSON** 

 Use funções JSON nos comandos `fields` e `filter` como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Mapa \$1 Lista \$1 Vazio   |   Retorna um mapa ou uma lista quando a entrada é uma representação de string do objeto JSON ou de uma matriz JSON. Retorna um valor vazio, se a entrada não for uma das representações.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   String   |   Retorna uma string JSON de um mapa ou dados da lista.   | 

## Funções de string de endereço IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Funções de string de endereço IP** 

 Use funções de string no endereço IP dos comandos `filter` e `fields` e como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  booliano |  Retorna `true` se o campo for um IPv6 endereço válido IPv4 ou.  | 
|  `isValidIpV4(fieldName: string)` |  booleano |  Retorna `true` se o campo for um IPv4 endereço válido.  | 
|  `isValidIpV6(fieldName: string)` |  booleano |  Retorna `true` se o campo for um IPv6 endereço válido.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  booleano |  Retorna `true` se o campo for um IPv6 endereço válido IPv4 ou dentro da sub-rede v4 ou v6 especificada. Ao especificar a sub-rede, use a notação CIDR, como `192.0.2.0/24` ou `2001:db8::/32`, onde `192.0.2.0` ou`2001:db8::` é o início do bloco CIDR.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  booleano |  Retorna `true` se o campo for um IPv4 endereço válido dentro da sub-rede v4 especificada. Ao especificar a sub-rede, use a notação CIDR, como `192.0.2.0/24`, em que `192.0.2.0` é o início do bloco CIDR.  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  booleano |  Retorna `true` se o campo for um IPv6 endereço válido dentro da sub-rede v6 especificada. Ao especificar a sub-rede, use a notação CIDR, como `2001:db8::/32`, em que `2001:db8::` é o início do bloco CIDR.  | 

## Funções de string
<a name="CWL_QuerySyntax-string-functions"></a>

 **Funções de string** 

 Use funções de string nos comandos `fields` e `filter` e como argumentos de outras funções. 


| Função | Tipo de resultado | Description | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Número |  Retornará `1` se o campo não for encontrado ou for uma string vazia.  | 
|  `isblank(fieldName: string)` |  Número |  Retornará `1` se o campo não for encontrado, for uma string vazia ou só contiver espaço branco.  | 
|  `concat(str: string, ...strings: string[])` |  string |  Concatena as strings.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  string |  Se a função não tiver um segundo argumento, ela removerá os caracteres em branco da esquerda da string. Se a função tiver um segundo argumento de string, ela não removerá os caracteres em branco. Em vez disso, remove os caracteres em `trimChars` à esquerda de `str`. Por exemplo, `ltrim("xyZxyfooxyZ","xyZ")` exibe `"fooxyZ"`.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  string |  Se a função não tiver um segundo argumento, ela removerá os caracteres em branco da direita da string. Se a função tiver um segundo argumento de string, ela não removerá os caracteres em branco. Em vez disso, remove os caracteres de `trimChars` à direita de `str`. Por exemplo, `rtrim("xyZfooxyxyZ","xyZ")` exibe `"xyZfoo"`.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  string |  Se a função não tiver um segundo argumento, ela removerá os caracteres em branco nas duas extremidades da string. Se a função tiver um segundo argumento de string, ela não removerá os caracteres em branco. Em vez disso, remove os caracteres de `trimChars` de ambos os lados de `str`. Por exemplo, `trim("xyZxyfooxyxyZ","xyZ")` exibe `"foo"`.  | 
|  `strlen(str: string)` |  número |  Retorna o tamanho da string em pontos de código Unicode.  | 
|  `toupper(str: string)` |  string |  Converte a string em letras maiúsculas.  | 
|  `tolower(str: string)` |  string |  Converte a string em letras minúsculas.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  string |  Retorna uma substring do índice especificado pelo argumento de número ao final da string. Se tiver um segundo argumento de número, a função conterá o tamanho da substring a ser recuperada. Por exemplo, `substr("xyZfooxyZ",3, 3)` exibe `"foo"`.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  string |  Substitui todas as instâncias de `searchValue` em `fieldName: string` por `replaceValue`. Por exemplo, a função `replace(logGroup,"smoke_test","Smoke")` pesquisa eventos de log em que o campo `logGroup` contém o valor da string `smoke_test` e substitui o valor pela string `Smoke`.  | 
|  `strcontains(str: string, searchValue: string)` |  número |  Retornará 1 se `str` contiver `searchValue` e 0, do contrário.  | 

# Campos contendo caracteres especiais
<a name="CWL_QuerySyntax-Guidelines"></a>

Se um campo contiver caracteres não alfanuméricos, exceto o símbolo `@` ou o ponto (`.`), você deverá delimitá-lo com caracteres de crase (```). Por exemplo, o campo de log `foo-bar` deve estar entre acentos graves (``foo-bar``) porque contém um caractere não alfanumérico, o hífen (`-`).

# Usar aliases e comentários em consultas
<a name="CWL_QuerySyntax-alias"></a>

 Crie consultas que contenham aliases. Use aliases para renomear campos de log ou ao extrair valores em campos. Use a palavra-chave `as` para dar um campo de log ou resultar em um alias. Você pode usar mais de um alias em uma consulta. Você pode usar aliases nos comandos a seguir: 
+  `fields` 
+  `parse` 
+  `sort` 
+  ` stats ` 

 Os exemplos a seguir mostram como criar consultas que contenham aliases. 

 **Exemplo** 

 A consulta contém um alias no comando `fields`. 

```
fields @timestamp, @message, accountId as ID
| sort @timestamp desc
| limit 20
```

 A consulta retorna os valores dos campos `@timestamp`, `@message` e `accountId`. Os resultados são classificados em ordem decrescente e limitados a 20. Os valores para `accountId` estão listados sob o alias `ID`. 

 **Exemplo** 

 A consulta contém um alias nos comandos `sort` e `stats`. 

```
stats count(*) by duration as time 
| sort time desc
```

 A consulta conta o número de vezes que o campo `duration` ocorre no grupo de logs e classifica os resultados em ordem decrescente. Os valores para `duration` estão listados sob o alias `time`. 

## Usar comentários
<a name="CWL_QuerySyntax-comments"></a>

 CloudWatch O Logs Insights oferece suporte a comentários em consultas. Use o caractere jogo da velha (**\$1**) para separar comentários. Você pode usar comentários para ignorar linhas em consultas ou consultas de documentos. 

 **Exemplo: consulta** 

 Quando a consulta a seguir é executada, a segunda linha é ignorada. 

```
fields @timestamp, @message, accountId
# | filter accountId not like "7983124201998"
| sort @timestamp desc
| limit 20
```