

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Funciones booleanas, de comparación, numéricas, de fecha y hora y otras
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Logs Insights admite muchas otras operaciones y funciones en las consultas, como se explica en las siguientes secciones. 

**Topics**
+ [Operadores aritméticos](#CWL_QuerySyntax-operations-arithmetic)
+ [Operadores booleanos](#CWL_QuerySyntax-operations-Boolean)
+ [Operadores de comparación](#CWL_QuerySyntax-operations-comparison)
+ [Operadores numéricos](#CWL_QuerySyntax-operations-numeric)
+ [Tipos de estructura](#CWL_QuerySyntax-structure-types)
+ [Funciones DateTime](#CWL_QuerySyntax-datetime)
+ [Funciones generales](#CWL_QuerySyntax-general-functions)
+ [Funciones JSON](#CWL_QuerySyntax-json-functions)
+ [Funciones de cadena de dirección IP](#CWL_QuerySyntax-IPaddress-functions)
+ [Funciones de cadena](#CWL_QuerySyntax-string-functions)

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

 Los operadores aritméticos aceptan tipos de datos numéricos como argumentos y devuelven resultados numéricos. Utilice operadores aritméticos en los comandos `filter` y `fields` y como argumentos para otras funciones. 


| Operación | Description (Descripción) | 
| --- | --- | 
|  `a + b` |  Suma  | 
|  `a - b` |  Resta  | 
|  `a * b` |  Multiplicación  | 
|  `a / b` |  División  | 
|  `a ^ b` |   Potencia (`2 ^ 3` devuelve `8`)   | 
|  `a % b` |   Resto o módulo (`10 % 3` devuelve `1`)   | 

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

 Utilice los operadores booleanos `and`, `or` y `not`. 

**nota**  
 Utilice operadores booleanos solo en funciones que devuelvan el valor **TRUE** o **FALSE**. 

## Operadores de comparación
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Los operadores de comparación aceptan todos los tipos de datos como argumentos y devuelven un resultado booleano. Utilice operadores de comparación en el comando `filter` y como argumentos para otras funciones. 


| Operador | Description (Descripción) | 
| --- | --- | 
|   `=`   |   Igualdad   | 
|   `!=`   |   Desigualdad   | 
|   `<`   |   Menor que   | 
|  `>` |   Mayor que   | 
|  `<=` |   Menor o igual que   | 
|   `>=`   |   Mayor o igual que   | 

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

 Las operaciones numéricas aceptan tipos de datos numéricos como argumentos y devuelven resultados numéricos. Utilice operaciones numéricas en los comandos `filter` y `fields` y como argumentos para otras funciones. 


| Operación | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|   `abs(a: number)`   |   número   |   Valor absoluto   | 
|   `ceil(a: number)`   |   número   |   Redondeo a valor máximo (menor número entero que es mayor que el valor de `a`).   | 
|   `floor(a: number)`   |  número |   Redondeo a valor mínimo (mayor número entero que es menor que el valor de `a`).   | 
|   `greatest(a: number, ...numbers: number[])`   |   número   |   Devuelve el valor más alto   | 
|   `least(a: number, ...numbers: number[])`   |  número |   Devuelve el valor más bajo   | 
|   `log(a: number)`   |   número   |   Registro natural   | 
|   `sqrt(a: number)`   |   número   |   Raíz cuadrada   | 

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

 Un mapa o una lista es un tipo de estructura de CloudWatch Logs Insights que permite acceder a los atributos de las consultas y utilizarlos. 

**Ejemplo: obtención de un mapa o una lista**  
 Se usa `jsonParse` para analizar un campo que es una cadena json y convertirlo en un mapa o una lista. 

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

**Ejemplo: acceso a los atributos**  
 Utilice el operador de acceso por puntos (map.attribute) para acceder a los elementos de un mapa. Si un atributo de un mapa contiene caracteres especiales, utilice acentos graves para incluir el nombre del atributo (map.attributes.`special.char`). 

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

 Utilice el operador de acceso entre corchetes (list[index]) para recuperar un elemento en una posición específica de la lista. 

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

 Coloque los caracteres especiales entre acentos graves (``) cuando haya caracteres especiales en el nombre de la clave. 

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

**Ejemplo: resultados vacíos**  
 Los mapas y las listas se consideran nulos para las funciones de cadena, número, y fecha y hora. 

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

 La comparación del mapa y la lista con cualquier otro campo da como resultado `false`. 

**nota**  
 No se admite el uso de mapas y listas en `dedup`, `pattern`,`sort` y `stats`. 

## Funciones DateTime
<a name="CWL_QuerySyntax-datetime"></a>

 **Funciones DateTime** 

 Utilice funciones datetime en los comandos `fields` y `filter` y como argumentos para otras funciones. Utilice estas funciones para crear buckets de hora para consultas con funciones de agregación. Utilice períodos de tiempo que tengan un número y uno de los siguientes valores:
+ `ms` para milisegundos 
+ `s` para segundos 
+ `m` para minutos 
+ `h` para horas 

 Por ejemplo, `10m` es 10 minutos y `1h` es 1 hora. 

**nota**  
Utilice la unidad de tiempo más adecuada para su función de fecha y hora. CloudWatch Los registros limitan la solicitud en función de la unidad de tiempo que elija. Por ejemplo, pone un límite de 60 como valor máximo para cualquier solicitud que utilice `s`. Por lo tanto, si lo especificas`bin(300s)`, CloudWatch Logs en realidad lo implementa como 60 segundos, ya que 60 es el número de segundos en un minuto, por lo que CloudWatch Logs no utilizará un número superior a 60`s`. Para crear un bucket de 5 minutos, utilice `bin(5m)` en su lugar.  
El límite de `ms` es 1000, el límite de `s` y `m` es 60 y el límite de `h` es 24.

En la siguiente tabla, se incluye una lista de las distintas funciones datetime que se pueden usar en comandos de consulta. La tabla enumera el tipo de resultado de cada función y contiene una descripción de cada función. 

**sugerencia**  
 Al crear un comando de consulta, puede utilizar el selector de intervalos de tiempo para seleccionar un periodo de tiempo que desea consultar. Por ejemplo, puede establecer un periodo entre intervalos de 5 a 30 minutos; intervalos de 1, 3 y 12 horas; o un marco temporal personalizado. También puede establecer periodos de tiempo entre fechas específicas. 


| Función | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Timestamp |  Redondea el valor de `@timestamp` según el periodo de tiempo indicado y, a continuación, trunca. Por ejemplo, `bin(5m)` redondea el valor de `@timestamp` a los 5 minutos más cercanos. Puede usarlo para agrupar varias entradas de registro en una consulta. En el siguiente ejemplo, se devuelve el número de excepciones por hora: <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> La función `bin` admite las siguientes unidades de tiempo y abreviaturas. Para todas las unidades y abreviaturas que incluyan más de un carácter, se admite agregar s para pluralizar. Así que tanto `hr` como `hrs` funcionan para especificar las horas. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Timestamp |  Trunca la marca temporal según el periodo indicado. Por ejemplo, `datefloor(@timestamp, 1h)` trunca todos los valores de `@timestamp` en la parte inferior de la hora.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Timestamp |  Redondea hacia arriba la marca temporal según el periodo indicado y, a continuación, trunca. Por ejemplo, `dateceil(@timestamp, 1h)` trunca todos los valores de `@timestamp` en la parte superior de la hora.  | 
|  `fromMillis(fieldName: number)` |  Timestamp |  Interpreta el campo de entrada como el número de milisegundos desde la fecha de inicio de Unix y lo convierte en una marca de tiempo.  | 
|  `toMillis(fieldName: Timestamp)` |  número |  Convierte la marca de tiempo que se encontró en el campo con nombre asignado en un número que representa los milisegundos desde la fecha de inicio de Unix. Por ejemplo, `toMillis(@timestamp)` convierte la marca temporal `2022-01-14T13:18:031.000-08:00` a `1642195111000`.  | 
|  `now()`  |  número  |  Devuelve la hora en que se inició el procesamiento de la consulta, en segundos por época. Esta función no toma argumentos. Puede usarlo para filtrar los resultados de la consulta según la hora actual. Por ejemplo, la siguiente consulta devuelve todos los errores 4xx de las últimas dos 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> El ejemplo siguiente devuelve todas las entradas de registro de las últimas cinco horas que contienen la palabra `error` o `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**nota**  
 Actualmente, CloudWatch Logs Insights no admite el filtrado de registros con marcas de tiempo legibles por humanos. 

## Funciones generales
<a name="CWL_QuerySyntax-general-functions"></a>

 **Funciones generales** 

 Utilice funciones generales en los comandos `fields` y `filter` y como argumentos para otras funciones. 


| Función | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Booleano   |   Devuelve `true` si el campo existe   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Devuelve el primer valor no nulo de la lista   | 

## Funciones JSON
<a name="CWL_QuerySyntax-json-functions"></a>

 **Funciones JSON** 

 Utilice funciones JSON en los comandos `fields` y `filter` y como argumentos para otras funciones. 


| Función | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Mapa \$1 Lista \$1 Vacío   |   Devuelve un mapa o una lista cuando la entrada es una representación en cadena de un objeto JSON o una matriz JSON. Devuelve un valor vacío si la entrada no es una de las representaciones.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   Cadena   |   Devuelve una cadena JSON de un mapa o de una lista de datos.   | 

## Funciones de cadena de dirección IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Funciones de cadena de dirección IP** 

 Utilice funciones de cadena de dirección IP en los comandos `filter` y `fields` y como argumentos para otras funciones. 


| Función | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  booleano |  Devuelve `true` si el campo es una IPv6 dirección IPv4 OR válida.  | 
|  `isValidIpV4(fieldName: string)` |  booleano |  Devuelve `true` si el campo es una IPv4 dirección válida.  | 
|  `isValidIpV6(fieldName: string)` |  booleano |  Devuelve `true` si el campo es una IPv6 dirección válida.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  booleano |  Devuelve `true` si el campo es una IPv6 dirección IPv4 o dirección válida dentro de la subred v4 o v6 especificada. Al especificar la subred, utilice la notación CIDR como `192.0.2.0/24` o `2001:db8::/32`, donde `192.0.2.0` o `2001:db8::` es el inicio del bloque de CIDR.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  booleano |  Devuelve `true` si el campo es una IPv4 dirección válida dentro de la subred v4 especificada. Al especificar la subred, utilice la notación CIDR como `192.0.2.0/24`, donde `192.0.2.0` es el inicio del bloque de CIDR.  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  booleano |  Devuelve `true` si el campo es una IPv6 dirección válida dentro de la subred v6 especificada. Al especificar la subred, utilice la notación CIDR como `2001:db8::/32`, donde `2001:db8::` es el inicio del bloque de CIDR.  | 

## Funciones de cadena
<a name="CWL_QuerySyntax-string-functions"></a>

 **Funciones de cadena** 

 Utilice funciones de cadena en los comandos `fields` y `filter` y como argumentos para otras funciones. 


| Función | Tipo de resultado | Description (Descripción) | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Número |  Devuelve `1` si el campo no se encuentra o es una cadena vacía.  | 
|  `isblank(fieldName: string)` |  Número |  Devuelve `1` si el campo no se encuentra, es una cadena vacía o solo contiene espacio en blanco.  | 
|  `concat(str: string, ...strings: string[])` |  cadena |  Concatena las cadenas.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  cadena |  Si la función no tiene un segundo argumento de cadena, elimina los espacios en blanco de la izquierda de la cadena. Si la función tiene un segundo argumento de cadena, no elimina espacios en blanco. En su lugar, elimina los caracteres de `trimChars` desde la izquierda de `str`. Por ejemplo, `ltrim("xyZxyfooxyZ","xyZ")` devuelve `"fooxyZ"`.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  cadena |  Si la función tiene un segundo argumento de cadena, elimina los espacios en blanco de la derecha de la cadena. Si la función tiene un segundo argumento de cadena, no elimina espacios en blanco. En su lugar, elimina los caracteres de `trimChars` desde la derecha de `str`. Por ejemplo, `rtrim("xyZfooxyxyZ","xyZ")` devuelve `"xyZfoo"`.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  cadena |  Si la función no tiene un segundo argumento, elimina espacios en blanco de ambos extremos de la cadena. Si la función tiene un segundo argumento de cadena, no elimina espacios en blanco. En su lugar, elimina los caracteres de `trimChars` desde ambos lados de `str`. Por ejemplo, `trim("xyZxyfooxyxyZ","xyZ")` devuelve `"foo"`.  | 
|  `strlen(str: string)` |  número |  Devuelve la longitud de la cadena puntos de código Unicode.  | 
|  `toupper(str: string)` |  cadena |  Convierte la cadena en mayúsculas.  | 
|  `tolower(str: string)` |  cadena |  Convierte la cadena de caracteres en minúsculas.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  cadena |  Devuelve una subcadena del índice especificado por el argumento numérico al final de la cadena. Si la función tiene un segundo argumento numérico, contiene la longitud de la subcadena que debe recuperarse. Por ejemplo, `substr("xyZfooxyZ",3, 3)` devuelve `"foo"`.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  cadena |  Sustituye todas las instancias de `searchValue` en `fieldName: string` por `replaceValue`. Por ejemplo, la función `replace(logGroup,"smoke_test","Smoke")` busca eventos de registro en los que el campo `logGroup` contiene el valor de cadena `smoke_test` y reemplaza el valor por la cadena `Smoke`.  | 
|  `strcontains(str: string, searchValue: string)` |  número |  Devuelve 1 si `str` contiene `searchValue` y 0 en los demás casos.  | 