

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  | 
|  `round(a: number [, d: number])`  |  number  |  Arrondit la valeur de`a`. Avec un argument, arrondit à l'entier le plus proche. Avec deux arguments, arrondit à la `d` décimale.  | 
|  `sqrt(a: number)`  |  number  |  Racine carrée  | 
|  `haversine(lat1: number, lon1: number, lat2: number, lon2: number)`  |  number  |  Calcule la distance du grand cercle en kilomètres entre deux points géographiques spécifiés par la latitude et la longitude en degrés.  | 
|  `toNumber(fieldName: string)`  |  number  |  Convertit la valeur d'un champ de chaîne en valeur numérique.  | 
|  `toInt(fieldName: string)`  |  number  |  Convertit la valeur d'un champ en entier (32 bits).  | 
|  `toLong(fieldName: string)`  |  number  |  Convertit la valeur d'un champ en un entier long (64 bits).  | 
|  `toDouble(fieldName: string)`  |  number  |  Convertit la valeur d'un champ en un nombre à virgule flottante à double précision.  | 

## 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 à des attributs et de les utiliser pour les requêtes. 

**Exemple : pour obtenir une carte ou une liste**  
 `jsonParse`Utilisez-le 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 (liste [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 dans des 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 dateheure. 

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

 La comparaison de la carte et de la liste avec d'autres champs donne`false`. 

**Note**  
 L'utilisation d'une carte et d'une 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 chiffre 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 Les journaux plafonnent votre demande en fonction de l'unité de temps que vous choisissez. Par exemple, elle limite à 60 la valeur maximale pour toute requête utilisant`s`. Donc, si vous 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, donc CloudWatch Logs n'utilisera 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, le plafond pour `s` et `m` est 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.<br />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><br />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.+  `millisecond` `ms` `msec` <br />+  `second` `s` `sec` <br />+  `minute` `m` `min` <br />+  `hour` `h` `hr` <br />+  `day` `d`  <br />+  `week` `w`  <br />+  `month` `mo` `mon` <br />+  `quarter` `q` `qtr` <br />+  `year` `y` `yr`  | 
| `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é démarré, en secondes d'époque. Cette fonction ne prend aucun argument.<br />Vous pouvez l'utiliser pour filtrer les résultats de votre requête en fonction de l'heure actuelle.<br />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><br />L'exemple suivant renvoie toutes les entrées de journal des cinq dernières heures qui contiennent le mot `error` ou `failure`<pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre> | 
| `parseDate(fieldName: string, format: string [, timezone: string])` | number | Analyse une chaîne de date en millisecondes d'époque à l'aide d'un modèle Java. DateTimeFormatter L'`timezone`argument facultatif spécifie le fuseau horaire à utiliser pour l'analyse.<br />Exemple : `fields parseDate(field, "yyyy-MM-dd", "UTC") as epoch` | 
| `formatDate(timestamp: LogField, format: string [, timezone: string])` | chaîne | Formate un horodatage à l'aide d'une chaîne de format de style strftime. Également disponible en tant qu'alias`strftime`. L'`timezone`argument facultatif spécifie le fuseau horaire pour le formatage.<br />Exemple : `fields formatDate(@timestamp, "%Y-%m-%d", "UTC") as date` | 

**Note**  
 Actuellement, 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  | 
|  `case(cond1, val1, cond2, val2, ..., [default])`  |  LogField  |  Évalue les conditions dans l'ordre et renvoie la valeur de la première condition vraie. Si aucune condition n'est vraie et qu'une valeur par défaut est fournie, renvoie la valeur par défaut. Supporte jusqu'à 10 branches.  | 
|  `if(condition: Boolean, trueValue: LogField, falseValue: LogField)`  |  LogField  |  Évalue une condition et renvoie `trueValue` si elle est vraie ou `falseValue` non.  | 
|  `isNumeric(fieldName: LogField)`  |  Booléen  |  Indique `true` si la valeur du champ peut être analysée comme un nombre. <br />Exemple : `filter isNumeric(@duration)` | 
|  `messageSize(fieldName: LogField)`  |  number  |  Renvoie la longueur en octets d'un champ de chaîne. <br />Exemple : `fields messageSize(@message) as size` | 
|  `queryStartTime()`  |  number  |  Renvoie l'heure de début de la fenêtre de requête en millisecondes d'époque.  | 
|  `queryEndTime()`  |  number  |  Renvoie l'heure de fin de la fenêtre de requête en millisecondes d'époque.  | 
|  `queryTimeRange()`  |  number  |  Renvoie la durée de la fenêtre de requête en millisecondes.  | 

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

 **Fonctions JSON ** 

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


| Fonction | Type de résultat | Description | 
| --- | --- | --- | 
|  `jsonParse(fieldName: string)`  |  Carte \| Liste \| 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)`  |  Chaîne  |  Renvoie une chaîne JSON à partir des données d'une carte ou d'une liste.  | 
|  `jsonArraySize(fieldName: LogField)`  |  number  |  Renvoie le nombre d'éléments d'un champ de chaîne de tableau JSON. <br />Exemple : `fields jsonArraySize(Operation) as arrayLen` | 
|  `jsonArrayContains(fieldName: LogField, value: string)`  |  Booléen  |  Renvoie `true` (1) si le tableau JSON du champ contient la valeur spécifiée. Renvoie `false` (0) pour un JSON non valide, un tableau non valide ou un tableau vide. Utilise une comparaison sensible aux majuscules. <br />Exemple : `filter jsonArrayContains(@roles, "admin")` | 

## 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 adresse IPv4 ou IPv6 valide. | 
| `isValidIpV4(fieldName: string)` | boolean | Renvoie `true` si le champ est une adresse IPv4 valide. | 
| `isValidIpV6(fieldName: string)` | boolean | Renvoie `true` si le champ est une adresse IPv6 valide. | 
| `isIpInSubnet(fieldName: string, subnet: string)` | boolean | Renvoie `true` si le champ est une adresse IPv4 ou IPv6 valide au sein du 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 adresse IPv4 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 adresse IP IPv6 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. | 
| `ipv4ToNumber(fieldName: string)` | number | Convertit une chaîne d'adresse IPv4 en sa représentation numérique. | 
| `isPrivateIP(fieldName: string)` | boolean | Renvoie `true` si l'adresse IP se trouve dans une plage privée (RFC 1918). | 
| `isPublicIP(fieldName: string)` | boolean | Renvoie `true` si l'adresse IP est routable publiquement. | 
| `isReservedIP(fieldName: string)` | boolean | Renvoie `true` si l'adresse IP se trouve dans une plage réservée. | 

## 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)` | Nombre | Renvoie `1` si le champ est manquant ou est une chaîne vide. | 
| `isblank(fieldName: string)` | Nombre | 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)`<br />`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)`<br />`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)`<br />`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)`<br />`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`.<br />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`. | 
| `regexReplace(fieldName: string, pattern: string, replacement: string)` | chaîne | Remplace toutes les sous-chaînes correspondant à l'expression régulière `pattern` par`replacement`. Utilise la syntaxe regex RE2. | 
| `strcontains(str: string, searchValue: string)`<br />`strcontains(str: string, searchValue: string, caseInsensitive: boolean)` | number | Renvoie 1 si `str` contient `searchValue` et 0 dans le cas contraire. Si le troisième paramètre est défini sur`true`, la correspondance ne fait pas la distinction entre majuscules et minuscules. | 
| `startsWith(str: string, searchValue: string)` | number | Renvoie 1 s'il `str` commence par `searchValue` et 0 sinon. | 
| `endsWith(str: string, searchValue: string)` | number | Renvoie 1 s'il `str` se termine par `searchValue` et 0 dans le cas contraire. | 
| `urlencode(str: string)` | chaîne | URL-encodes la ficelle. | 
| `urldecode(str: string)` | chaîne | URL-decodes la ficelle. | 
| `base64encode(str: string)` | chaîne | Base64-encodes la ficelle. | 
| `base64decode(str: string)` | chaîne | Base64-decodes la ficelle. | 
| `split(str: string, delimiter: string)` | array | Divise une chaîne par le délimiteur spécifié et renvoie un tableau de sous-chaînes. | 
| `hexToAscii(value: string)` | chaîne | Convertit une chaîne hexadécimale en texte ASCII.<br />Exemple : `fields hexToAscii("48656c6c6f") as text` | 
| `hexToDec(value: string)` | number | Convertit une chaîne hexadécimale en nombre décimal.<br />Exemple : `fields hexToDec("0xff") as dec` | 
| `decToHex(value: number)` | chaîne | Convertit un entier décimal en une chaîne hexadécimale minuscule avec préfixe. `0x` Les nombres négatifs produisent un `-0x` préfixe. Non-integers sont tronqués.<br />Exemple : `fields decToHex(255) as hex` | 