

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzioni booleane, di confronto, numeriche, datetime e altre
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Logs Insights supporta molte altre operazioni e funzioni nelle query, come spiegato nelle sezioni seguenti. 

**Topics**
+ [Operatori aritmetici](#CWL_QuerySyntax-operations-arithmetic)
+ [Operatori booleani](#CWL_QuerySyntax-operations-Boolean)
+ [Operatori di confronto](#CWL_QuerySyntax-operations-comparison)
+ [Operatori numerici](#CWL_QuerySyntax-operations-numeric)
+ [Tipi di struttura](#CWL_QuerySyntax-structure-types)
+ [Funzioni DateTime](#CWL_QuerySyntax-datetime)
+ [Funzioni generali](#CWL_QuerySyntax-general-functions)
+ [Funzioni JSON](#CWL_QuerySyntax-json-functions)
+ [Funzioni della stringa di indirizzi IP](#CWL_QuerySyntax-IPaddress-functions)
+ [Funzioni stringa](#CWL_QuerySyntax-string-functions)

## Operatori aritmetici
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Le operazioni aritmetiche accettano tipi di dati numerici come argomenti e restituiscono risultati numerici. Puoi utilizzare operazioni aritmetiche nei comandi `filter` e `fields` e come argomenti per altre funzioni. 


| Operation | Description | 
| --- | --- | 
| `a + b` | Addizione | 
| `a - b` | Sottrazione | 
| `a * b` | Moltiplicazione | 
| `a / b` | Divisione | 
| `a ^ b` |  Elevamento a potenza (`2 ^ 3` restituisce `8`)  | 
| `a % b` |  Resto o modulo (`10 % 3` restituisce `1`)  | 

## Operatori booleani
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Utilizza gli operatori booleani `and`, `or` e `not`. 

**Nota**  
 Utilizza gli operatori booleani solo nelle funzioni che restituiscono un valore **TRUE** o **FALSE**. 

## Operatori di confronto
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Le operazioni di confronto accettano tutti i tipi di dati come argomenti e restituiscono un risultato booleano. Utilizza operazioni di confronto nel comando `filter` e come argomenti per altre funzioni. 


| Operatore | Description | 
| --- | --- | 
|  `=`  |  Uguale  | 
|  `!=`  |  Non uguale  | 
|  `<`  |  Minore di  | 
| `>` |  Maggiore di  | 
| `<=` |  Minore o uguale a  | 
|  `>=`  |  Maggiore o uguale a  | 

## Operatori numerici
<a name="CWL_QuerySyntax-operations-numeric"></a>

 Le operazioni numeriche accettano tipi di dati numerici come argomenti e restituiscono risultati numerici. Utilizza operazioni aritmetiche nei comandi `filter` e `fields`, oltre che come argomenti per altre funzioni. 


| Operation | Tipo di risultato | Description | 
| --- | --- | --- | 
|  `abs(a: number)`  |  numero  |  Valore assoluto  | 
|  `ceil(a: number)`  |  numero  |  Arrotonda per eccesso (l'intero più piccolo che è maggiore del valore di `a`)  | 
|  `floor(a: number)`  | numero |  Arrotonda per difetto (l'intero più grande che è minore del valore di `a`)  | 
|  `greatest(a: number, ...numbers: number[])`  |  numero  |  Restituisce il valore più grande  | 
|  `least(a: number, ...numbers: number[])`  | numero |  Restituisce il valore di piccolo  | 
|  `log(a: number)`  |  numero  |  Log naturale  | 
|  `round(a: number [, d: number])`  |  numero  |  Arrotonda il valore di. `a` Con un argomento, arrotonda al numero intero più vicino. Con due argomenti, esegue l'arrotondamento al `d` numero decimale.  | 
|  `sqrt(a: number)`  |  numero  |  Radice quadrata  | 
|  `haversine(lat1: number, lon1: number, lat2: number, lon2: number)`  |  numero  |  Calcola la distanza del cerchio massimo in chilometri tra due punti geografici specificati da latitudine e longitudine in gradi.  | 
|  `toNumber(fieldName: string)`  |  numero  |  Converte il valore di un campo stringa in un valore numerico.  | 
|  `toInt(fieldName: string)`  |  numero  |  Converte il valore di un campo in un numero intero (32 bit).  | 
|  `toLong(fieldName: string)`  |  numero  |  Converte il valore di un campo in un numero intero lungo (64 bit).  | 
|  `toDouble(fieldName: string)`  |  numero  |  Converte il valore di un campo in un numero a virgola mobile a precisione doppia.  | 

## Tipi di struttura
<a name="CWL_QuerySyntax-structure-types"></a>

 Una mappa o un elenco è un tipo di struttura in CloudWatch Logs Insights che consente di accedere e utilizzare gli attributi per le interrogazioni. 

**Esempio: per ottenere una mappa o un elenco**  
 Usalo `jsonParse` per analizzare un campo che è una stringa json in una mappa o in un elenco. 

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

**Esempio: per accedere agli attributi**  
 Usa l'operatore di accesso a punti (map.attribute) per accedere agli elementi di una mappa.. Se un attributo in una mappa contiene caratteri speciali, usa i backtick per racchiudere il nome dell'attributo (map.attributes). `special.char`). 

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

 Usa l'operatore di accesso tra parentesi (list [index]) per recuperare un elemento in una posizione specifica all'interno dell'elenco. 

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

 Racchiudi i caratteri speciali all'indietro (``) quando sono presenti caratteri speciali nel nome della chiave. 

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

**Esempio: risultati vuoti**  
 Le mappe e gli elenchi vengono considerati nulli per le funzioni stringa, numero e datetime. 

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

 Il confronto tra mappa ed elenco con qualsiasi altro campo ne risulta. `false` 

**Nota**  
 L'uso della mappa e dell'elenco in `dedup` `pattern``sort`,, e `stats` non è supportato. 

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

 **Funzioni DateTime** 

 Utilizza le funzioni datetime nei comandi `fields` e `filter` e come argomenti per altre funzioni. Utilizza queste funzioni per creare bucket temporali per le query con funzioni di aggregazione. Utilizza periodi di tempo composti da un numero e da uno dei seguenti:
+ `ms`per millisecondi 
+ `s`per secondi 
+ `m`per minuti 
+ `h`per ore 

 Ad esempio, `10m` è 10 minuti e `1h` è un'ora. 

**Nota**  
Usa l'unità di tempo più appropriata per la tua funzione datetime. CloudWatch I log limitano la richiesta in base all'unità di tempo scelta. Ad esempio, limita a 60 il valore massimo per qualsiasi richiesta utilizzata. `s` Quindi, se lo specifichi`bin(300s)`, CloudWatch Logs lo implementa effettivamente come 60 secondi, perché 60 è il numero di secondi in un minuto, quindi CloudWatch Logs non utilizzerà un numero superiore a 60 con. `s` Per creare un bucket da 5 minuti, usa `bin(5m)` invece.  
Il limite per `ms` è 1000, i limiti per `s` e `m` sono 60 e il limite per `h` è 24.

La tabella seguente contiene un elenco delle diverse funzioni datetime che è possibile utilizzare nei comandi di query. La tabella elenca il tipo di risultato di ciascuna funzione e contiene una descrizione di ciascuna funzione. 

**Suggerimento**  
 Quando crei un comando di query, puoi utilizzare il selettore temporale per selezionare un periodo di tempo per il quale desideri eseguire query. Ad esempio, puoi impostare un periodo di tempo con intervalli di 5 e 30 minuti, intervalli di 1, 3 e 12 ore oppure un intervallo di tempo personalizzato. Puoi anche impostare periodi di tempo tra date specifiche. 


| Funzione | Tipo di risultato | Description | 
| --- | --- | --- | 
| `bin(period: Period)` | Time stamp | Arrotonda il valore di `@timestamp` al periodo di tempo specificato per poi troncarlo. Ad esempio, `bin(5m)` arrotonda il valore `@timestamp` ai 5 minuti più vicini.<br />È possibile utilizzarlo per raggruppare più voci di log in un'interrogazione. L'esempio seguente restituisce il numero di eccezioni all'ora:<pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre><br />La funzione `bin` supporta le seguenti abbreviazioni e unità di tempo. Per tutte le unità e le abbreviazioni che includono più di un carattere, è supportata l'aggiunta di s per il plurale. Quindi entrambi `hr` e `hrs` lavorano per specificare gli orari.+  `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)` | Time stamp | Tronca il time stamp al periodo specificato. Ad esempio, `datefloor(@timestamp, 1h)` tronca tutti i valori di `@timestamp` alla mezzora. | 
| `dateceil(timestamp: Timestamp, period: Period)` | Time stamp | Arrotonda il time stamp al periodo specificato e quindi tronca. Ad esempio, `dateceil(@timestamp, 1h)` tronca tutti i valori di `@timestamp` all'inizio di ogni ora. | 
| `fromMillis(fieldName: number)` | Time stamp | Interpreta il campo di input come il numero di millisecondi dall'epoca Unix e lo converte in un timestamp. | 
| `toMillis(fieldName: Timestamp)` | numero | Converte il timestamp trovato nel campo denominato in un numero che rappresenta i millisecondi dall'epoca di Unix. Ad esempio, `toMillis(@timestamp)` converte il timestamp `2022-01-14T13:18:031.000-08:00` in `1642195111000`. | 
| `now()` | numero | Restituisce l'ora in cui è stata avviata l'elaborazione della query, in secondi epocali. Questa funzione non accetta argomenti.<br />È possibile utilizzarlo per filtrare i risultati della query in base all'ora corrente.<br />Ad esempio, la seguente query restituisce tutti gli errori 4xx delle ultime due ore:<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'esempio seguente restituisce tutte le voci di registro delle ultime cinque ore che contengono la parola `error` o `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])` | numero | Analizza una stringa di data in millisecondi di epoca utilizzando un pattern Java. DateTimeFormatter L'`timezone`argomento opzionale specifica il fuso orario da utilizzare per l'analisi.<br />Ad esempio: `fields parseDate(field, "yyyy-MM-dd", "UTC") as epoch` | 
| `formatDate(timestamp: LogField, format: string [, timezone: string])` | stringa | Formatta un timestamp utilizzando una stringa di formato in stile strftime. Disponibile anche come alias. `strftime` L'`timezone`argomento opzionale specifica il fuso orario per la formattazione.<br />Ad esempio: `fields formatDate(@timestamp, "%Y-%m-%d", "UTC") as date` | 

**Nota**  
 Attualmente, CloudWatch Logs Insights non supporta il filtraggio dei log con timestamp leggibili dall'uomo. 

## Funzioni generali
<a name="CWL_QuerySyntax-general-functions"></a>

 **Funzioni generali** 

 Utilizza le funzioni generali nei comandi `fields` e `filter` e come argomenti per altre funzioni. 


| Funzione | Tipo di risultato | Description | 
| --- | --- | --- | 
|  `ispresent(fieldName: LogField)`  |  Booleano  |  Restituisce `true` se il campo esiste  | 
|  `coalesce(fieldName: LogField, ...fieldNames: LogField[])`  |  LogField  |  Restituisce il primo valore non nullo dall'elenco.  | 
|  `case(cond1, val1, cond2, val2, ..., [default])`  |  LogField  |  Valuta le condizioni in ordine e restituisce il valore per la prima condizione vera. Se nessuna condizione è vera e viene fornito un valore predefinito, restituisce il valore predefinito. Supporta fino a 10 filiali.  | 
|  `if(condition: Boolean, trueValue: LogField, falseValue: LogField)`  |  LogField  |  Valuta una condizione e restituisce `trueValue` se la condizione è vera o `falseValue` meno.  | 
|  `isNumeric(fieldName: LogField)`  |  Booleano  |  Restituisce `true` se il valore del campo può essere analizzato come numero. <br />Ad esempio: `filter isNumeric(@duration)` | 
|  `messageSize(fieldName: LogField)`  |  numero  |  Restituisce la lunghezza in byte di un campo stringa. <br />Ad esempio: `fields messageSize(@message) as size` | 
|  `queryStartTime()`  |  numero  |  Restituisce l'ora di inizio della finestra di interrogazione in millisecondi dell'epoca.  | 
|  `queryEndTime()`  |  numero  |  Restituisce l'ora di fine della finestra di interrogazione in millisecondi dell'epoca.  | 
|  `queryTimeRange()`  |  numero  |  Restituisce la durata della finestra di interrogazione in millisecondi.  | 

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

 **Funzioni JSON ** 

 Usa le funzioni JSON nei `filter` comandi `fields` e come argomenti per altre funzioni. 


| Funzione | Tipo di risultato | Description | 
| --- | --- | --- | 
|  `jsonParse(fieldName: string)`  |  Mappa \| Elenco \| Vuoto  |  Restituisce una mappa o un elenco quando l'input è una rappresentazione in stringa di un oggetto JSON o di un array JSON. Restituisce un valore vuoto, se l'input non è una delle rappresentazioni.  | 
|  `jsonStringify(fieldName: Map \| List)`  |  Stringa  |  Restituisce una stringa JSON da una mappa o da un elenco di dati.  | 
|  `jsonArraySize(fieldName: LogField)`  |  numero  |  Restituisce il numero di elementi di un campo di stringa di matrice JSON. <br />Ad esempio: `fields jsonArraySize(Operation) as arrayLen` | 
|  `jsonArrayContains(fieldName: LogField, value: string)`  |  Booleano  |  Restituisce `true` (1) se l'array JSON nel campo contiene il valore specificato. Restituisce `false` (0) per un JSON non valido, un array non di matrice o un array vuoto. Utilizza il confronto tra maiuscole e minuscole. <br />Ad esempio: `filter jsonArrayContains(@roles, "admin")` | 

## Funzioni della stringa di indirizzi IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Funzioni della stringa di indirizzi IP** 

 Utilizza le funzioni stringa per gli indirizzi IP nei comandi `filter` e `fields`, oltre che come argomenti per altre funzioni. 


| Funzione | Tipo di risultato | Description | 
| --- | --- | --- | 
| `isValidIp(fieldName: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv4 o IPv6 valido. | 
| `isValidIpV4(fieldName: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv4 valido. | 
| `isValidIpV6(fieldName: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv6 valido. | 
| `isIpInSubnet(fieldName: string, subnet: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv4 o IPv6 valido all'interno della sottorete v4 o v6 specificata. Quando si specifica la sottorete, utilizzare la notazione CIDR, come `192.0.2.0/24` o `2001:db8::/32`, dove `192.0.2.0` o `2001:db8::` è l'inizio del blocco CIDR. | 
| `isIpv4InSubnet(fieldName: string, subnet: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv4 valido all'interno della sottorete v4 specificata. Quando si specifica la sottorete, utilizzare la notazione CIDR, come `192.0.2.0/24`, dove `192.0.2.0` è l'inizio del blocco CIDR. | 
| `isIpv6InSubnet(fieldName: string, subnet: string)` | booleano | Restituisce `true` se il campo è un indirizzo IPv6 valido all'interno della sottorete v6 specificata. Quando si specifica la sottorete, utilizzare la notazione CIDR, come `2001:db8::/32`, dove `2001:db8::` è l'inizio del blocco CIDR. | 
| `ipv4ToNumber(fieldName: string)` | numero | Converte una stringa di indirizzo IPv4 nella sua rappresentazione numerica. | 
| `isPrivateIP(fieldName: string)` | booleano | Restituisce `true` se l'indirizzo IP è compreso in un intervallo privato (RFC 1918). | 
| `isPublicIP(fieldName: string)` | booleano | Restituisce `true` se l'indirizzo IP è instradabile pubblicamente. | 
| `isReservedIP(fieldName: string)` | booleano | Restituisce `true` se l'indirizzo IP è compreso in un intervallo riservato. | 

## Funzioni stringa
<a name="CWL_QuerySyntax-string-functions"></a>

 **Funzioni stringa** 

 Utilizza le funzioni stringa nei comandi `fields` e `filter`, oltre che come argomenti per altre funzioni. 


| Funzione | Tipo di risultato | Description | 
| --- | --- | --- | 
| `isempty(fieldName: string)` | Numero | Restituisce `1` se il campo manca o è una stringa vuota. | 
| `isblank(fieldName: string)` | Numero | Restituisce `1` se il campo manca, è una stringa vuota o contiene solo spazi vuoti. | 
| `concat(str: string, ...strings: string[])` | stringa | Concatena le stringhe. | 
| `ltrim(str: string)`<br />`ltrim(str: string, trimChars: string)` | stringa | Se la funzione non dispone di un secondo argomento, rimuove gli spazi vuoti dalla sinistra della stringa. Se la funzione dispone di un secondo argomento stringa, non rimuove gli spazi vuoti. Invece, rimuove i caratteri in `trimChars` dalla sinistra di `str`. Ad esempio, `ltrim("xyZxyfooxyZ","xyZ")` restituisce `"fooxyZ"`. | 
| `rtrim(str: string)`<br />`rtrim(str: string, trimChars: string)` | stringa | Se la funzione dispone di un secondo argomento stringa, rimuove gli spazi vuoti dalla destra della stringa. Se la funzione dispone di un secondo argomento stringa, non rimuove gli spazi vuoti. Invece, rimuove i caratteri di `trimChars` dalla destra di `str`. Ad esempio, `rtrim("xyZfooxyxyZ","xyZ")` restituisce `"xyZfoo"`. | 
| `trim(str: string)`<br />`trim(str: string, trimChars: string)` | stringa | Se la funzione dispone di un secondo argomento, rimuove gli spazi vuoti da entrambe le estremità della stringa. Se la funzione dispone di un secondo argomento stringa, non rimuove gli spazi vuoti. Invece, rimuove i caratteri di `trimChars` da entrambi i lati di `str`. Ad esempio, `trim("xyZxyfooxyxyZ","xyZ")` restituisce `"foo"`. | 
| `strlen(str: string)` | numero | Restituisce la lunghezza della stringa in punti di codice Unicode. | 
| `toupper(str: string)` | stringa | Converte la stringa in maiuscolo. | 
| `tolower(str: string)` | stringa | Converte la stringa in minuscolo. | 
| `substr(str: string, startIndex: number)`<br />`substr(str: string, startIndex: number, length: number)` | stringa | Restituisce una sottostringa partendo dall'indice specificato dall'argomento numero fino alla fine della stringa. Se la funzione dispone di un secondo argomento numero, contiene la lunghezza della sottostringa da recuperare. Ad esempio, `substr("xyZfooxyZ",3, 3)` restituisce `"foo"`. | 
| `replace(fieldName: string, searchValue: string, replaceValue: string)` | stringa | Sostituisce tutte le istanze di `searchValue` in `fieldName: string` con `replaceValue`.<br />Ad esempio, la funzione `replace(logGroup,"smoke_test","Smoke")` cerca log eventi in cui il campo `logGroup` contiene il valore della stringa `smoke_test` e sostituisce il valore con la stringa `Smoke`. | 
| `regexReplace(fieldName: string, pattern: string, replacement: string)` | stringa | Sostituisce tutte le sottostringhe che corrispondono all'espressione `pattern` regolare con. `replacement` Utilizza la sintassi regex RE2. | 
| `strcontains(str: string, searchValue: string)`<br />`strcontains(str: string, searchValue: string, caseInsensitive: boolean)` | numero | Restituisce 1 se `str` contiene `searchValue` e 0 in caso contrario. Se il terzo parametro è impostato su`true`, la corrispondenza non fa distinzione tra maiuscole e minuscole. | 
| `startsWith(str: string, searchValue: string)` | numero | Restituisce 1 se `str` inizia con `searchValue` e 0 in caso contrario. | 
| `endsWith(str: string, searchValue: string)` | numero | Restituisce 1 se `str` termina con `searchValue` e 0 in caso contrario. | 
| `urlencode(str: string)` | stringa | URL-encodes la stringa. | 
| `urldecode(str: string)` | stringa | URL-decodes la stringa. | 
| `base64encode(str: string)` | stringa | Base64-encodes la stringa. | 
| `base64decode(str: string)` | stringa | Base64-decodes la stringa. | 
| `split(str: string, delimiter: string)` | array | Divide una stringa in base al delimitatore specificato e restituisce una matrice di sottostringhe. | 
| `hexToAscii(value: string)` | stringa | Converte una stringa esadecimale in testo ASCII.<br />Ad esempio: `fields hexToAscii("48656c6c6f") as text` | 
| `hexToDec(value: string)` | numero | Converte una stringa esadecimale in un numero decimale.<br />Ad esempio: `fields hexToDec("0xff") as dec` | 
| `decToHex(value: number)` | stringa | Converte un numero intero decimale in una stringa esadecimale minuscola con prefisso. `0x` I `-0x` numeri negativi producono un prefisso. Non-integers vengono troncati.<br />Ad esempio: `fields decToHex(255) as hex` | 