

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

# OpenSearch Piped Processing Language (PPL)
<a name="CWL_AnalyzeLogData_PPL"></a>

Questa sezione contiene un'introduzione di base all'interrogazione dei CloudWatch log utilizzando PPL. OpenSearch Con PPL, è possibile recuperare, interrogare e analizzare i dati utilizzando comandi concatenati, semplificando la comprensione e la composizione di interrogazioni complesse. La sua sintassi si basa sulle pipe Unix e consente il concatenamento di comandi per trasformare ed elaborare i dati. Con PPL, puoi filtrare e aggregare i dati e utilizzare un ricco set di funzioni matematiche, di stringhe, di data, condizionali e di altro tipo per l'analisi.

L'inclusione `SOURCE` in una query PPL è un modo utile per specificare i gruppi di log, gli indici di campo e le fonti di dati da includere in una query quando si utilizza l' AWS CLI API o per creare una query. Il `SOURCE` comando è supportato solo nell'API AWS CLI and, non nella console. CloudWatch Quando si utilizza la CloudWatch console per avviare una query, si utilizza l'interfaccia della console per specificare i gruppi di log e il nome e il tipo di origine dati.

`aws:fieldIndex`Da utilizzare per restituire solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query. I gruppi di log pertinenti vengono selezionati automaticamente, in base ai campi specificati nel comando. `filterIndex` Ciò riduce il volume scansionato ignorando i gruppi di log che non contengono eventi di registro contenenti il campo specificato nella query e analizzando solo i gruppi di log che corrispondono al valore specificato nella query per questo indice di campo. `aws:fieldIndex`Utilizzatelo per specificare il nome del campo, insieme al nome e al valore del campo nel comando di origine, per interrogare solo i dati indicizzati contenenti il campo e il valore specificati. Per ulteriori informazioni, consulta [Crea indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione](CloudWatchLogs-Field-Indexing.md) 

È possibile utilizzare OpenSearch PPL per le interrogazioni dei gruppi di log nella Standard Log Class. 

**Nota**  
Per informazioni su tutti i comandi di interrogazione OpenSearch PPL supportati nei CloudWatch registri e informazioni dettagliate sulla sintassi e le restrizioni, vedere [Comandi PPL supportati](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-ppl.html) nella Service Developer Guide. OpenSearch   
 [Per informazioni su altri linguaggi di interrogazione che è possibile utilizzare, vedere [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html), Service SQL e OpenSearch [CloudWatch Metrics Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_SQL.html)


| Comando o funzione | Query di esempio | Description | 
| --- | --- | --- | 
|  campi |  `fields field1, field2`  |  Visualizza un insieme di campi che necessitano di proiezione.  | 
|  join |  `LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` \| fields l.field_1, r.field_2`  |  Unisce due set di dati.  | 
|  dove |  `where field1="success" \| where field2 != "i-023fe0a90929d8822" \| fields field3, field4, field5,field6 \| head 1000`  |  Filtra i dati in base alle condizioni specificate.  | 
|  AWS: FieldIndex |  `source = [`aws:fieldIndex`="region", `region` = "us-west-2"] \| where status = 200 \| head 10`  |  Restituisce solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query.  | 
|  stats |  `stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 \| head 1000`  |  Esegue aggregazioni e calcoli  | 
|  parse |  `parse field1 ".*/(?<field2>[^/]+$)" \| where field2 = "requestId" \| fields field1, field2 \| head 1000`  |  Estrae un pattern di espressione regolare (regex) da una stringa e visualizza il pattern estratto. Il pattern estratto può essere ulteriormente utilizzato per creare nuovi campi o filtrare i dati.  | 
|  sort |  `stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 \| sort -field1Alias \| head 1000`  |  Ordina i risultati visualizzati in base al nome di un campo. Usa sort - FieldName per ordinare in ordine decrescente.  | 
|  eval |  `eval field2 = field1 * 2 \| fields field1, field2 \| head 20`  |  Modifica o elabora il valore di un campo e lo memorizza in un campo diverso. Ciò è utile per modificare matematicamente una colonna, applicare funzioni di stringa a una colonna o applicare funzioni di data a una colonna.  | 
|  rinominare |  `rename field2 as field1 \| fields field1;`  |  Rinomina uno o più campi nel risultato della ricerca.  | 
|  head |  `fields `@message` \| head 20`  |  Limita i risultati dell'interrogazione visualizzati alle prime N righe.  | 
|  top |  `top 2 field1 by field2`  |  Trova i valori più frequenti per un campo.  | 
|  dedup |  `dedup field1 \| fields field1, field2, field3`  |  Rimuove le voci duplicate in base ai campi specificati.  | 
|  rari |  `rare field1 by field2`  |  Trova i valori meno frequenti di tutti i campi nell'elenco dei campi.  | 
|  subquery |  `where field_1 IN [ search source= `subquery_lg` \| fields field_2 ] \| fields id, field_1 `  |  Esegue interrogazioni complesse e annidate all'interno delle istruzioni PPL.  | 
|  linea di tendenza |  `trendline sma(2, field1) as field1Alias`  |  Calcola le medie mobili dei campi.  | 
|  EventStats |  `eventstats sum(field1) by field2`  |  Arricchisce i dati degli eventi con statistiche riassuntive calcolate. Analizza campi specifici all'interno degli eventi, calcola varie misure statistiche e quindi aggiunge questi risultati a ciascun evento originale come nuovi campi.  | 
|  espansione |  `eval tags_array_string = json_extract(`@message`, '$.tags')\| eval tags_array = json_array(json_extract(tags_string, '$[0]'), json_extract(tags_string, '$[1]'))\| expand tags_array as color_tags`  |  Suddivide un campo contenente più valori in righe separate, creando una nuova riga per ogni valore nel campo specificato.  | 
|  riempi/null |  `fields `@timestamp`, error_code, status_code \| fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"`  |  Riempie i campi nulli con il valore fornito. Può essere utilizzato in uno o più campi.  | 
|  flatten |  `eval metadata_struct = json_object('size', json_extract(metadata_string, '$.size'), 'color', json_extract(metadata_string, '$.color')) \| flatten metadata_struct as (meta_size, meta_color) `  |  Appiattisce un campo. Il campo deve essere di questo tipo: `struct<?,?>` o. `array<struct<?,?>>`  | 
|  cidrmatch |  `where cidrmatch(ip, '2003:db8::/32') \| fields ip `  |  Verifica se l'indirizzo IP specificato rientra nell'intervallo CIDR specificato.  | 
|  riepilogo del campo |  `where field1 != 200 \| fieldsummary includefields= field1 nulls=true`  |  Calcola le statistiche di base per ogni campo (conteggio, conteggio distinto, min, max, avg, stddev e mean).  | 
|  grok |  `grok email '.+@%{HOSTNAME:host}' \| fields email, host`  |  Analizza un campo di testo con uno schema grok e aggiunge i risultati al risultato della ricerca.  | 
|  Funzioni stringa |  `eval field1Len = LENGTH(field1) \| fields field1Len`  |  Funzioni integrate in PPL che possono manipolare e trasformare stringhe e dati di testo all'interno di query PPL. Ad esempio, convertire maiuscole e minuscole, combinare stringhe, estrarre parti e pulire il testo.  | 
|  Funzioni data-ora |  `eval newDate = ADDDATE(DATE('2020-08-26'), 1) \| fields newDate `  |  Funzioni integrate per la gestione e la trasformazione dei dati di data e ora nelle query PPL. Ad esempio, date\$1add, date\$1format, datediff, date-sub, timestampadd, timestampdiff, current\$1timezone, utc\$1timestamp e current\$1date.  | 
|  Funzioni di condizione |  `eval field2 = isnull(field1) \| fields field2, field1, field3`  |  Funzioni integrate che controllano le condizioni specifiche dei campi e valutano le espressioni in modo condizionale. Ad esempio, se field1 è nullo, restituisci field2.  | 
|  Funzioni matematiche |  `eval field2 = ACOS(field1) \| fields field1`  |  Funzioni integrate per eseguire calcoli e trasformazioni matematiche nelle interrogazioni PPL. Ad esempio, abs (valore assoluto), round (arrotonda i numeri), sqrt (radice quadrata), pow (calcolo della potenza) e ceil (arrotonda al numero intero più vicino).  | 
|  CryptoGraphic funzioni |  `eval crypto = MD5(field)\| head 1000`  |  Per calcolare l'hash di un determinato campo  | 
|  Funzioni JSON |  `eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') \| fields valid_json`  |  Funzioni integrate per la gestione di JSON, tra cui array, estrazione e convalida. Ad esempio, json\$1object, json\$1array, to\$1json\$1string, json\$1array\$1length, json\$1extract, json\$1keys e json\$1valid.   | 

## Ambito della query
<a name="CWL_AnalyzeLogData_PPL-scope"></a>

L'inclusione di SOURCE in una query è un modo utile per specificare i gruppi di log da includere in una query quando si utilizza l'API AWS CLI or per creare una query. Il comando SOURCE è supportato solo nell'API AWS CLI and, non nella CloudWatch console. Quando si utilizza la CloudWatch console per avviare una query, si utilizza l'interfaccia della console per specificare i gruppi di log e il nome e il tipo di origine dati.

Il comando source di PPL ora supporta diversi modi per specificarli:

1. Gruppo di log

1. Indici di campo - Nuovi

1. Fonte e tipo di dati: nuovo

### Gruppo di log
<a name="CWL_AnalyzeLogData_PPL-scope-loggroup"></a>

La selezione della fonte del gruppo di log può essere utilizzata quando i clienti sanno esattamente quali gruppi di log devono essere cercati

```
source = [lg:`/aws/lambda/my-function`] | where status = 200 | head 10
```

### Indici di campo
<a name="CWL_AnalyzeLogData_PPL-scope-fieldindex"></a>

La selezione dell'origine basata sull'indice dei campi riduce la quantità di dati interrogati limitando i risultati ai soli dati indicizzati quando i filtri riguardano i campi che sono stati indicizzati. I gruppi di log pertinenti vengono selezionati automaticamente, in base ai campi specificati nel comando. `filterIndex` Per ulteriori informazioni sugli indici di campo e su come crearli, consulta [Creare indici di campo per migliorare le prestazioni delle query e ridurre](CloudWatchLogs-Field-Indexing.md) il volume di scansione.

`aws:fieldIndex`Da utilizzare per restituire solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query. Per questi gruppi di log indicizzati in questo campo, ottimizza ulteriormente la query ignorando i gruppi di log che non contengono eventi di registro contenenti il campo specificato nella query per il campo indicizzato. Riduce ulteriormente il volume scansionato tentando di analizzare solo gli eventi di registro di questi gruppi di log che corrispondono al valore specificato nella query per questo indice di campo. Per ulteriori informazioni sugli indici di campo e su come crearli, consulta Creare indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione.

In PPL, `aws:fieldIndex` viene utilizzato per specificare quali coppie chiave-valore devono essere trattate come indici. La sintassi è la seguente

```
source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10
```

dove:

1. ``aws:fieldIndex`="region"`identifica la regione come campo Index.

   1. Nota: invece di = i clienti possono utilizzare IN per specificare più indici (esempio seguente)

1. ``region`="us-west-2"`identifica la condizione del filtro da applicare

   1. Nota: invece di = i clienti possono utilizzare IN per specificare più valori (esempio seguente)

I clienti possono specificare più FieldIndex come segue

```
source = [`aws:fieldIndex` IN ("status", "region"), `status` = 200, `region` IN ("us-west-2", "us-east-1")] | head 10
```

### Fonte e tipo di dati
<a name="CWL_AnalyzeLogData_PPL-scope-datasource"></a>

La selezione della fonte di dati e della fonte basata sul tipo può essere utilizzata quando i clienti sanno esattamente quali fonti di dati devono essere interrogate. Questa query viene eseguita su uno o più gruppi di log che contengono l'origine e il tipo di dati specificati.

```
source = [ds:`data_source.type`] | where status = 200 | head 10
```

#### PPL supportato per le interrogazioni sulle fonti di dati
<a name="CWL_AnalyzeLogData_PPL-scope-datasource-supported"></a>

Per supportare il caso d'uso per l'interrogazione di sorgenti di dati in PPL, è possibile utilizzare la clausola Dynamic Source Selector. Utilizzando questa sintassi, è possibile interrogare le fonti di dati specificandole nel comando di ricerca. È possibile specificare fino a 10 fonti di dati.

**Sintassi**

```
source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`, ...ds:`DataSourcen.Typen`]
```

**Query di esempio**

```
search source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`] | fields field1, field2
```

### Esempio per la combinazione
<a name="CWL_AnalyzeLogData_PPL-scope-combined"></a>

I clienti possono specificare tutti gli operatori di selezione della sorgente in qualsiasi ordine e i risultati sarebbero l'intersezione di tutte le condizioni applicate.

Ad esempio,/aws/lambda/my-function-1 potrebbe contenere più fonti e tipi di dati tra cui un'ampia varietà di indici. Quando viene eseguita la seguente query, i risultati restituiti avranno solo eventi di origine e tipo DataSource 1.Type1 e corrispondenti ai criteri di 'status' = 200.

```
search source=[
    ds:`DataSource1.Type1`, 
    lg:`/aws/lambda/my-function-1`, 
    `aws:fieldIndex` IN ("status"), `status` = 200 
]
```

## Restrizioni
<a name="CWL_AnalyzeLogData_PPL-restrictions"></a>

Le seguenti restrizioni si applicano quando si utilizza OpenSearch PPL per eseguire query in Logs Insights. CloudWatch 
+ Non è possibile utilizzare i comandi join o subquery con le query relative alle fonti di dati.