

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fonctions booléennes, de comparaison, numériques, de date/heure et autres
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Logs Insights prend en charge de nombreuses autres opérations et fonctions dans les requêtes, comme expliqué dans les sections suivantes. 

**Topics**
+ [Opérateurs arithmétiques](#CWL_QuerySyntax-operations-arithmetic)
+ [Opérateurs booléens](#CWL_QuerySyntax-operations-Boolean)
+ [Opérateurs de comparaison](#CWL_QuerySyntax-operations-comparison)
+ [Opérateurs numériques](#CWL_QuerySyntax-operations-numeric)
+ [Types de structures](#CWL_QuerySyntax-structure-types)
+ [Fonctions Datetime](#CWL_QuerySyntax-datetime)
+ [Fonctions générales](#CWL_QuerySyntax-general-functions)
+ [Fonctions JSON](#CWL_QuerySyntax-json-functions)
+ [Fonctions de chaîne d'adresse IP](#CWL_QuerySyntax-IPaddress-functions)
+ [Fonctions de chaîne](#CWL_QuerySyntax-string-functions)

## Opérateurs arithmétiques
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Les opérateurs arithmétiques acceptent les types de données numériques en tant qu'arguments et renvoient des résultats numériques. Utilisez des opérateurs arithmétiques dans les commandes `filter` et `fields` et en tant qu'arguments pour d'autres fonctions. 


| Opération | Description | 
| --- | --- | 
|  `a + b` |  Addition  | 
|  `a - b` |  Soustraction  | 
|  `a * b` |  Multiplication  | 
|  `a / b` |  Division  | 
|  `a ^ b` |   Élévation à la puissance (`2 ^ 3` renvoie `8`)   | 
|  `a % b` |   Valeurs restantes ou module (`10 % 3` renvoie `1`)   | 

## Opérateurs booléens
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Utilisez les opérateurs booléens `and`, `or` et `not`. 

**Note**  
 Utilisez les opérateurs booléens uniquement dans les fonctions qui renvoient une valeur de **TRUE** (VRAI) ou **FALSE** (FAUX). 

## Opérateurs de comparaison
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Les opérateurs de comparaison acceptent tous les types de données en tant qu'arguments et renvoient un résultat booléen. Utilisez des opérations de comparaison dans la commande `filter` et en tant qu'arguments pour d'autres fonctions. 


| Opérateur | Description | 
| --- | --- | 
|   `=`   |   Égal à   | 
|   `!=`   |   Non égal à   | 
|   `<`   |   Inférieur à   | 
|  `>` |   Supérieur à   | 
|  `<=` |   Inférieur ou égal à   | 
|   `>=`   |   Supérieur ou égal à   | 

## Opérateurs numériques
<a name="CWL_QuerySyntax-operations-numeric"></a>

 Les opérations numériques acceptent les types de données numériques en tant qu'arguments numériques et renvoient des résultats numériques. Utilisez des opérations numériques dans les commandes `filter` et `fields` et en tant qu'arguments pour d'autres fonctions. 


| Opération | Type de résultat | Description | 
| --- | --- | --- | 
|   `abs(a: number)`   |   nombre   |   Valeur absolue   | 
|   `ceil(a: number)`   |   number   |   Arrondir jusqu'au nombre entier supérieur suivant (le plus petit nombre entier supérieur à la valeur de `a`)   | 
|   `floor(a: number)`   |  number |   Arrondir jusqu'au nombre entier inférieur suivant (le plus grand nombre entier inférieur à la valeur de `a`)   | 
|   `greatest(a: number, ...numbers: number[])`   |   number   |   Renvoie la valeur la plus grande   | 
|   `least(a: number, ...numbers: number[])`   |  number |   Renvoie la valeur la plus petite   | 
|   `log(a: number)`   |   number   |   Journal naturel   | 
|   `sqrt(a: number)`   |   number   |   Racine carrée   | 

## Types de structures
<a name="CWL_QuerySyntax-structure-types"></a>

 Une carte ou une liste est un type de structure dans CloudWatch Logs Insights qui vous permet d'accéder aux attributs et de les utiliser pour les requêtes. 

**Exemple : pour obtenir une carte ou une liste**  
 `jsonParse`À utiliser pour analyser un champ qui est une chaîne JSON dans une carte ou une liste. 

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

**Exemple : pour accéder aux attributs**  
 Utilisez l'opérateur d'accès par points (map.attribute) pour accéder aux éléments d'une carte. Si un attribut d'une carte contient des caractères spéciaux, utilisez des backticks pour placer le nom de l'attribut (map.attributes). `special.char`). 

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

 Utilisez l'opérateur d'accès entre crochets (list [index]) pour récupérer un élément à une position spécifique dans la liste. 

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

 Enveloppez les caractères spéciaux en backticks (``) lorsque des caractères spéciaux sont présents dans le nom de la clé. 

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

**Exemple : résultats vides**  
 Les cartes et les listes sont traitées comme nulles pour les fonctions de chaîne, de nombre et de date. 

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

 La comparaison de la carte et de la liste avec tout autre champ donne`false`. 

**Note**  
 L'utilisation de la carte et de la liste dans `dedup``pattern`,`sort`, et `stats` n'est pas prise en charge. 

## Fonctions Datetime
<a name="CWL_QuerySyntax-datetime"></a>

 **Fonctions Datetime** 

 Utilisez les fonctions de date et heure dans les commandes `fields` et `filter` et en tant qu'arguments pour d'autres fonctions. Utilisez ces fonctions pour créer des compartiments de temps pour les requêtes avec des fonctions de regroupement. Utilisez des périodes composées d'un nombre et de l'un des éléments suivants :
+ `ms`pendant des millisecondes 
+ `s`pendant quelques secondes 
+ `m`pendant quelques minutes 
+ `h`pendant des heures 

 Par exemple, `10m` correspond à 10 minutes et `1h` correspond à une heure. 

**Note**  
Utilisez l'unité de temps la plus appropriée pour votre fonction datetime. CloudWatch Logs plafonne votre demande en fonction de l'unité de temps que vous avez choisie. Par exemple, il plafonne à 60 la valeur maximale pour toute demande utilisant`s`. Ainsi, si vous le spécifiez`bin(300s)`, CloudWatch Logs l'implémente en fait sous la forme de 60 secondes, car 60 est le nombre de secondes dans une minute. CloudWatch Logs n'utilisera donc pas un nombre supérieur à 60 avec`s`. Pour créer un bucket de 5 minutes, utilisez `bin(5m)` plutôt.  
Le plafond pour `ms` est de 1000, les capuchons pour `s` et `m` sont de 60, et le plafond pour `h` est de 24.

Le tableau suivant contient une liste des différentes fonctions de date et heure que vous pouvez utiliser dans des commandes de requête. Le tableau répertorie le type de résultat de chaque fonction et contient une description de chaque fonction. 

**Astuce**  
 Lorsque vous créez une commande de requête, vous pouvez utiliser le sélecteur d'intervalle pour sélectionner une période de temps à interroger. Par exemple, vous pouvez définir une période de temps entre des intervalles de 5 à 30 minutes, des intervalles de 1, 3 et 12 heures ou une période personnalisée. Vous pouvez également définir des périodes entre des dates spécifiques. 


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Horodatage |  Arrondit la valeur de `@timestamp` à la période donnée, puis la tronque. Par exemple, `bin(5m)` arrondit la valeur de `@timestamp` aux 5 minutes les plus proches. Vous pouvez l'utiliser pour regrouper plusieurs entrées de journal dans une requête. L'exemple suivant indique le nombre d'exceptions par heure : <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> les unités de temps et les abréviations suivantes sont prises en charge par la fonction `bin`. Pour toutes les unités et abréviations qui incluent plus d'un caractère, l'ajout de s au pluriel est pris en charge. Donc, les deux `hr` et `hrs` travaillent pour spécifier les heures. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Horodatage |  Tronque l'horodatage pour la période donnée. Par exemple, `datefloor(@timestamp, 1h)` tronque toutes les valeurs de `@timestamp` vers la valeur la plus basse de l'heure.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Horodatage |  Arrondit l'horodatage pour la période donnée, puis la tronque. Par exemple, `dateceil(@timestamp, 1h)` tronque toutes les valeurs de `@timestamp` vers la valeur la plus élevée de l'heure.  | 
|  `fromMillis(fieldName: number)` |  Horodatage |  Interprète le champ en entrée comme le nombre de millisecondes depuis l'époque Unix et le convertit en horodatage.  | 
|  `toMillis(fieldName: Timestamp)` |  number |  Convertit l'horodatage trouvé dans le champ nommé en un nombre représentant les millisecondes depuis l'époque Unix. Par exemple, `toMillis(@timestamp)` convertit l'horodatage `2022-01-14T13:18:031.000-08:00` à `1642195111000`.  | 
|  `now()`  |  number  |  Renvoie l'heure à laquelle le traitement de la requête a été lancé, en secondes d'époque. Cette fonction ne prend aucun argument. Vous pouvez l'utiliser pour filtrer les résultats de votre requête en fonction de l'heure actuelle. Par exemple, la requête suivante renvoie toutes les erreurs 4xx des deux dernières heures : <pre>parse @message "Status Code: *;" as statusCode\n <br />| filter statusCode >= 400 and statusCode <= 499  \n <br />| filter toMillis(@timestamp) >= (now() * 1000 - 7200000)</pre> L'exemple suivant renvoie toutes les entrées du journal des cinq dernières heures contenant le mot `error` ou `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**Note**  
 À l'heure actuelle, CloudWatch Logs Insights ne prend pas en charge le filtrage des journaux avec des horodatages lisibles par l'homme. 

## Fonctions générales
<a name="CWL_QuerySyntax-general-functions"></a>

 **Fonctions générales** 

 Utilisez des fonctions générales dans les commandes `fields` et `filter` et en tant qu'arguments pour d'autres fonctions. 


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Booléen   |   Renvoie `true` si le champ existe   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Renvoie la première valeur non nulle de la liste   | 

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

 **Fonctions JSON** 

 Utilisez les fonctions JSON dans les `filter` commandes `fields` et comme arguments pour d'autres fonctions. 


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Carte \$1 Liste \$1 Vide   |   Renvoie une carte ou une liste lorsque l'entrée est une représentation sous forme de chaîne d'un objet JSON ou d'un tableau JSON. Renvoie une valeur vide si l'entrée ne fait pas partie de la représentation.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   String   |   Renvoie une chaîne JSON à partir des données d'une carte ou d'une liste.   | 

## Fonctions de chaîne d'adresse IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Fonctions de chaîne d'adresse IP** 

 Utilisez les fonctions de chaîne d'adresse IP dans les commandes `filter` et `fields` et en tant qu'arguments pour d'autres fonctions. 


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  booléen |  Renvoie `true` si le champ est une IPv6 adresse IPv4 ou une adresse valide.  | 
|  `isValidIpV4(fieldName: string)` |  boolean |  Renvoie `true` si le champ est une IPv4 adresse valide.  | 
|  `isValidIpV6(fieldName: string)` |  boolean |  Renvoie `true` si le champ est une IPv6 adresse valide.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  boolean |  Renvoie `true` si le champ est une IPv6 adresse valide IPv4 dans le sous-réseau v4 ou v6 spécifié. Lorsque vous spécifiez le sous-réseau, utilisez la notation CIDR telle que `192.0.2.0/24` ou `2001:db8::/32`, où `192.0.2.0` ou `2001:db8::` est le début du bloc d'adresse CIDR.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  boolean |  Renvoie `true` si le champ est une IPv4 adresse valide dans le sous-réseau v4 spécifié. Lorsque vous spécifiez le sous-réseau, utilisez la notation CIDR telle que `192.0.2.0/24` où `192.0.2.0` est le début du bloc d'adresse CIDR.  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  boolean |  Renvoie `true` si le champ est une IPv6 adresse valide dans le sous-réseau v6 spécifié. Lorsque vous spécifiez le sous-réseau, utilisez la notation CIDR telle que `2001:db8::/32` où `2001:db8::` est le début du bloc d'adresse CIDR.  | 

## Fonctions de chaîne
<a name="CWL_QuerySyntax-string-functions"></a>

 **Fonctions de chaîne** 

 Utilisez des fonctions de chaîne dans les commandes `fields` et `filter` et en tant qu'arguments pour d'autres fonctions. 


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Number |  Renvoie `1` si le champ est manquant ou est une chaîne vide.  | 
|  `isblank(fieldName: string)` |  Number |  Renvoie `1` si le champ est manquant, est une chaîne vide ou contient uniquement un espace.  | 
|  `concat(str: string, ...strings: string[])` |  chaîne |  Concatène les chaînes.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  chaîne |  Si la fonction ne possède pas de deuxième argument, elle supprime les espaces blancs à gauche de la chaîne. Si la fonction possède un deuxième argument de chaîne, elle ne supprime pas l'espace blanc. Au lieu de cela, elle supprime les caractères de `trimChars` à gauche de `str`. Par exemple, `ltrim("xyZxyfooxyZ","xyZ")` renvoie `"fooxyZ"`.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  chaîne |  Si la fonction ne possède pas de deuxième argument, elle supprime les espaces blancs à droite de la chaîne. Si la fonction possède un deuxième argument de chaîne, elle ne supprime pas l'espace blanc. Au lieu de cela, elle supprime les caractères de `trimChars` à droite de `str`. Par exemple, `rtrim("xyZfooxyxyZ","xyZ")` renvoie `"xyZfoo"`.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  chaîne |  Si la fonction ne possède pas de deuxième argument, elle supprime les espaces blancs aux deux extrémités de la chaîne. Si la fonction possède un deuxième argument de chaîne, elle ne supprime pas l'espace blanc. Au lieu de cela, il supprime les caractères de `trimChars` des deux côtés de `str`. Par exemple, `trim("xyZxyfooxyxyZ","xyZ")` renvoie `"foo"`.  | 
|  `strlen(str: string)` |  number |  Renvoie la longueur de la chaîne en points de code Unicode.  | 
|  `toupper(str: string)` |  chaîne |  Convertit la chaîne en majuscules.  | 
|  `tolower(str: string)` |  chaîne |  Convertit la chaîne en minuscules.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  chaîne |  Renvoie une sous-chaîne à partir de l'index spécifié par l'argument de nombre à la fin de la chaîne. Si la fonction comporte un second argument de nombre, elle comporte la longueur de la sous-chaîne à récupérer. Par exemple, `substr("xyZfooxyZ",3, 3)` renvoie `"foo"`.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  chaîne |  Remplace toutes les instances de `searchValue` dans `fieldName: string` par `replaceValue`. Par exemple, la fonction `replace(logGroup,"smoke_test","Smoke")` recherche les événements du journal où le champ `logGroup` contient la valeur de chaîne `smoke_test` et remplace la valeur par la chaîne `Smoke`.  | 
|  `strcontains(str: string, searchValue: string)` |  number |  Renvoie 1 si `str` contient `searchValue` et 0 dans le cas contraire.  | 