

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

Dieser Abschnitt enthält eine grundlegende Einführung in das Abfragen von CloudWatch Logs mit PPL. OpenSearch Mit PPL können Sie Daten mithilfe von in der Pipeline zusammengefügten Befehlen abrufen, abfragen und analysieren, was das Verständnis und die Erstellung komplexer Abfragen erleichtert. Die Syntax basiert auf Unix-Pipes und ermöglicht die Verkettung von Befehlen zur Transformation und Verarbeitung von Daten. Mit PPL können Sie Daten filtern und aggregieren und eine Vielzahl von mathematischen, Zeichenketten-, Datums-, Bedingungs- und anderen Funktionen für die Analyse verwenden.

Die Aufnahme `SOURCE` in eine PPL-Abfrage ist eine nützliche Methode, um die Protokollgruppen, Feldindizes und Datenquellen anzugeben, die in eine Abfrage aufgenommen werden sollen, wenn Sie die AWS CLI OR-API zum Erstellen einer Abfrage verwenden. Der `SOURCE` Befehl wird nur in der AWS CLI AND-API unterstützt, nicht in der CloudWatch Konsole. Wenn Sie die CloudWatch Konsole verwenden, um eine Abfrage zu starten, verwenden Sie die Konsolenschnittstelle, um die Protokollgruppen sowie den Namen und Typ der Datenquelle anzugeben.

Wird verwendet, `aws:fieldIndex` um nur indizierte Daten zurückzugeben, indem eine Abfrage erzwungen wird, nur Protokollgruppen zu scannen, die in einem Feld indexiert sind, das Sie in der Abfrage angeben. Die relevanten Protokollgruppen werden automatisch auf der Grundlage der im Befehl angegebenen Felder ausgewählt. `filterIndex` Dadurch wird das gescannte Volumen reduziert, indem Protokollgruppen übersprungen werden, die keine Protokollereignisse enthalten, die das in der Abfrage angegebene Feld enthalten, und nur Protokollgruppen gescannt werden, die dem in der Abfrage für diesen Feldindex angegebenen Wert entsprechen. Geben Sie `aws:fieldIndex` hier den Feldnamen zusammen mit dem Feldnamen und dem Feldwert im Quellbefehl an, um nur indizierte Daten abzufragen, die das angegebene Feld und den angegebenen Wert enthalten. Weitere Informationen finden Sie unter [Erstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren](CloudWatchLogs-Field-Indexing.md). 

Sie können OpenSearch PPL für Abfragen von Protokollgruppen in der Standard-Protokollklasse verwenden. 

**Anmerkung**  
Informationen zu allen in CloudWatch Logs unterstützten OpenSearch PPL-Abfragebefehlen sowie ausführliche Informationen zu Syntax und Einschränkungen finden Sie unter [Unterstützte PPL-Befehle](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-ppl.html) im OpenSearch Service Developer Guide.  
 Informationen zu anderen Abfragesprachen, die Sie verwenden können, finden Sie unter [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html), [OpenSearch Service SQL](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_SQL.html) und [CloudWatch Metrics Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html)


| Befehl oder Funktion | Beispielabfrage | Description | 
| --- | --- | --- | 
|  fields |  `fields field1, field2`  |  Zeigt eine Reihe von Feldern an, die projiziert werden müssen.  | 
|  join |  `LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` \| fields l.field_1, r.field_2`  |  Verbindet zwei Datensätze miteinander.  | 
|  where |  `where field1="success" \| where field2 != "i-023fe0a90929d8822" \| fields field3, field4, field5,field6 \| head 1000`  |  Filtert die Daten auf der Grundlage der von Ihnen angegebenen Bedingungen.  | 
|  aws:FieldIndex |  `source = [`aws:fieldIndex`="region", `region` = "us-west-2"] \| where status = 200 \| head 10`  |  Gibt nur indizierte Daten zurück, indem eine Abfrage erzwungen wird, nur Protokollgruppen zu scannen, die für ein Feld indiziert sind, das Sie in der Abfrage angeben.  | 
|  stats |  `stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 \| head 1000`  |  Führt Aggregationen und Berechnungen durch  | 
|  parse |  `parse field1 ".*/(?<field2>[^/]+$)" \| where field2 = "requestId" \| fields field1, field2 \| head 1000`  |  Extrahiert ein Muster mit regulären Ausdrücken (Regex) aus einer Zeichenfolge und zeigt das extrahierte Muster an. Das extrahierte Muster kann weiter verwendet werden, um neue Felder zu erstellen oder Daten zu filtern.  | 
|  sort |  `stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 \| sort -field1Alias \| head 1000`  |  Sortiert die angezeigten Ergebnisse nach einem Feldnamen. Verwenden Sie sort -FieldName , um in absteigender Reihenfolge zu sortieren.  | 
|  eval |  `eval field2 = field1 * 2 \| fields field1, field2 \| head 20`  |  Ändert oder verarbeitet den Wert eines Felds und speichert ihn in einem anderen Feld. Dies ist nützlich, um eine Spalte mathematisch zu modifizieren, Zeichenkettenfunktionen auf eine Spalte anzuwenden oder Datumsfunktionen auf eine Spalte anzuwenden.  | 
|  umbenennen |  `rename field2 as field1 \| fields field1;`  |  Benennt ein oder mehrere Felder im Suchergebnis um.  | 
|  head |  `fields `@message` \| head 20`  |  Beschränkt die angezeigten Abfrageergebnisse auf die ersten N Zeilen.  | 
|  top |  `top 2 field1 by field2`  |  Findet die häufigsten Werte für ein Feld.  | 
|  dedup |  `dedup field1 \| fields field1, field2, field3`  |  Entfernt doppelte Einträge auf der Grundlage der von Ihnen angegebenen Felder.  | 
|  selten |  `rare field1 by field2`  |  Findet die seltensten Werte aller Felder in der Feldliste.  | 
|  subquery |  `where field_1 IN [ search source= `subquery_lg` \| fields field_2 ] \| fields id, field_1 `  |  Führt komplexe, verschachtelte Abfragen innerhalb Ihrer PPL-Anweisungen durch.  | 
|  Trendlinie |  `trendline sma(2, field1) as field1Alias`  |  Berechnet die gleitenden Durchschnitte von Feldern.  | 
|  EventStats |  `eventstats sum(field1) by field2`  |  Reichert Ihre Eventdaten mit berechneten zusammenfassenden Statistiken an. Es analysiert bestimmte Felder innerhalb Ihrer Ereignisse, berechnet verschiedene statistische Kennzahlen und fügt diese Ergebnisse dann als neue Felder an jedes ursprüngliche Ereignis an.  | 
|  expand |  `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`  |  Zerlegt ein Feld, das mehrere Werte enthält, in separate Zeilen und erstellt für jeden Wert im angegebenen Feld eine neue Zeile.  | 
|  fillnull |  `fields `@timestamp`, error_code, status_code \| fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"`  |  Füllt Nullfelder mit dem von Ihnen angegebenen Wert. Es kann in einem oder mehreren Feldern verwendet werden.  | 
|  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) `  |  Macht ein Feld flach. Das Feld muss von diesem Typ sein: `struct<?,?>` oder. `array<struct<?,?>>`  | 
|  cidrmatch |  `where cidrmatch(ip, '2003:db8::/32') \| fields ip `  |  Prüft, ob die angegebene IP-Adresse innerhalb des angegebenen CIDR-Bereichs liegt.  | 
|  Zusammenfassung des Feldes |  `where field1 != 200 \| fieldsummary includefields= field1 nulls=true`  |  Berechnet grundlegende Statistiken für jedes Feld (Anzahl, eindeutige Anzahl, Min., Max, Durchschnitt, Standardwert und Mittelwert).  | 
|  grok |  `grok email '.+@%{HOSTNAME:host}' \| fields email, host`  |  Analysiert ein Textfeld mit einem Grok-Muster und hängt die Ergebnisse an das Suchergebnis an.  | 
|  Zeichenfolgenfunktionen |  `eval field1Len = LENGTH(field1) \| fields field1Len`  |  Integrierte Funktionen in PPL, mit denen Zeichenketten- und Textdaten in PPL-Abfragen bearbeitet und transformiert werden können. Zum Beispiel das Konvertieren von Groß- und Kleinschreibung, das Kombinieren von Zeichenketten, das Extrahieren von Teilen und das Bereinigen von Text.  | 
|  Funktionen für Datum und Uhrzeit |  `eval newDate = ADDDATE(DATE('2020-08-26'), 1) \| fields newDate `  |  Integrierte Funktionen für die Verarbeitung und Transformation von Datums- und Zeitstempeldaten in PPL-Abfragen. Zum Beispiel date\$1add, date\$1format, datediff, date-sub, timestampadd, timestampdiff, current\$1timezone, utc\$1timestamp und current\$1date.  | 
|  Bedingungsfunktionen |  `eval field2 = isnull(field1) \| fields field2, field1, field3`  |  Integrierte Funktionen, die nach bestimmten Feldbedingungen suchen und Ausdrücke bedingt auswerten. Wenn beispielsweise field1 null ist, wird field2 zurückgegeben.  | 
|  Mathematische Funktionen |  `eval field2 = ACOS(field1) \| fields field1`  |  Integrierte Funktionen für die Durchführung mathematischer Berechnungen und Transformationen in PPL-Abfragen. Zum Beispiel abs (absoluter Wert), round (rundet Zahlen), sqrt (Quadratwurzel), pow (Potenzberechnung) und ceil (rundet auf die nächste Ganzzahl auf).  | 
|  CryptoGraphic Funktionen |  `eval crypto = MD5(field)\| head 1000`  |  Um den Hash eines bestimmten Feldes zu berechnen  | 
|  JSON-Funktionen |  `eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') \| fields valid_json`  |  Integrierte Funktionen für den Umgang mit JSON, einschließlich Arrays, Extrahieren und Validieren. Zum Beispiel json\$1object, json\$1array, to\$1json\$1string, json\$1array\$1length, json\$1extract, json\$1keys und json\$1valid.   | 

## Gültigkeitsbereich der Abfrage
<a name="CWL_AnalyzeLogData_PPL-scope"></a>

Das Einbeziehen von SOURCE in eine Abfrage ist eine nützliche Methode, um die Protokollgruppen anzugeben, die in eine Abfrage aufgenommen werden sollen, wenn Sie die AWS CLI OR-API zum Erstellen einer Abfrage verwenden. Der Befehl SOURCE wird nur in der AWS CLI AND-API unterstützt, nicht in der CloudWatch Konsole. Wenn Sie die CloudWatch Konsole verwenden, um eine Abfrage zu starten, verwenden Sie die Konsolenschnittstelle, um die Protokollgruppen sowie den Namen und Typ der Datenquelle anzugeben.

Der Quellbefehl von PPL unterstützt jetzt mehrere Möglichkeiten, sie anzugeben:

1. Gruppe protokollieren

1. Feldindizes — Neu

1. Datenquelle und Datentyp — Neu

### Protokollgruppe
<a name="CWL_AnalyzeLogData_PPL-scope-loggroup"></a>

Die Quellenauswahl für die Protokollgruppe kann verwendet werden, wenn Kunden wissen, welche Protokollgruppe (n) genau durchsucht werden muss

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

### Feldindizes
<a name="CWL_AnalyzeLogData_PPL-scope-fieldindex"></a>

Die auf Feldindexen basierende Quellauswahl reduziert die Menge der abgefragten Daten, indem die Ergebnisse auf indizierte Daten beschränkt werden, wenn Ihre Filter auf indizierte Felder abzielen. Die relevanten Protokollgruppen werden automatisch auf der Grundlage der im Befehl angegebenen Felder ausgewählt. `filterIndex` Weitere Informationen zu Feldindizes und deren Erstellung finden Sie unter [Feldindizes erstellen, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren](CloudWatchLogs-Field-Indexing.md).

Wird verwendet, `aws:fieldIndex` um nur indizierte Daten zurückzugeben, indem eine Abfrage erzwungen wird, nur Protokollgruppen zu scannen, die für ein Feld indiziert sind, das Sie in der Abfrage angeben. Für diese Protokollgruppen, die in diesem Feld indexiert sind, wird die Abfrage weiter optimiert, indem die Protokollgruppen übersprungen werden, die keine Protokollereignisse enthalten, die das in der Abfrage für das indizierte Feld angegebene Feld enthalten. Das gescannte Volumen wird weiter reduziert, indem versucht wird, nur Protokollereignisse aus diesen Protokollgruppen zu scannen, die dem in der Abfrage für diesen Feldindex angegebenen Wert entsprechen. Weitere Informationen zu Feldindizes und deren Erstellung finden Sie unter Feldindizes erstellen, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren.

`aws:fieldIndex`Wird in PPL verwendet, um anzugeben, welche Schlüssel-Wert-Paare als Indizes behandelt werden sollen. Die Syntax lautet wie folgt

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

wobei

1. ``aws:fieldIndex`="region"`identifiziert die Region als Feldindex.

   1. Hinweis: Statt = können Kunden IN verwenden, um mehrere Indizes anzugeben (Beispiel unten)

1. ``region`="us-west-2"`identifiziert die anzuwendende Filterbedingung

   1. Hinweis: Statt = können Kunden IN verwenden, um mehrere Werte anzugeben (Beispiel unten)

Kunden können mehrere FieldIndexes wie folgt angeben

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

### Datenquelle und Typ
<a name="CWL_AnalyzeLogData_PPL-scope-datasource"></a>

Die Datenquellen- und typbasierte Quellenauswahl kann verwendet werden, wenn Kunden wissen, welche Datenquellen genau abgefragt werden müssen. Diese Abfrage wird über eine oder mehrere Protokollgruppen ausgeführt, die die angegebene Datenquelle und den angegebenen Datentyp enthalten.

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

#### PPL wird für Datenquellenabfragen unterstützt
<a name="CWL_AnalyzeLogData_PPL-scope-datasource-supported"></a>

Um den Anwendungsfall für die Abfrage von Datenquellen in PPL zu unterstützen, können Sie die dynamische Quellenauswahlklausel verwenden. Mit dieser Syntax können Sie Datenquellen abfragen, indem Sie sie im Suchbefehl angeben. Sie können bis zu 10 Datenquellen angeben.

**Syntax**

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

**Beispielabfrage**

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

### Kombiniertes Beispiel
<a name="CWL_AnalyzeLogData_PPL-scope-combined"></a>

Kunden können alle Operatoren zur Quellenauswahl in beliebiger Reihenfolge angeben. Die Ergebnisse wären dann der Schnittpunkt aller angewandten Bedingungen.

Beispielsweise könnte/aws/lambda/my-function-1 mehrere Datenquellen und -typen enthalten, einschließlich einer Vielzahl von Indizes. Wenn die folgende Abfrage ausgeführt wurde, enthielten die zurückgegebenen Ergebnisse nur Ereignisse der Quelle und des Typs DataSource 1.Type1, die den Kriterien 'status' = 200 entsprechen.

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

## Einschränkungen
<a name="CWL_AnalyzeLogData_PPL-restrictions"></a>

Die folgenden Einschränkungen gelten, wenn Sie OpenSearch PPL für Abfragen in Logs Insights verwenden. CloudWatch 
+ Sie können die Befehle join oder subquery nicht mit Datenquellenabfragen verwenden.