

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.

# Boolesche, Vergleichs-, numerische, Datetime- und andere Funktionen
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Logs Insights unterstützt viele andere Operationen und Funktionen in Abfragen, wie in den folgenden Abschnitten erläutert. 

**Topics**
+ [Arithmetische Operatoren](#CWL_QuerySyntax-operations-arithmetic)
+ [Boolesche Operatoren](#CWL_QuerySyntax-operations-Boolean)
+ [Vergleichsoperatoren](#CWL_QuerySyntax-operations-comparison)
+ [Numerische Operatoren](#CWL_QuerySyntax-operations-numeric)
+ [Strukturtypen](#CWL_QuerySyntax-structure-types)
+ [Datum-/Uhrzeit-Funktionen](#CWL_QuerySyntax-datetime)
+ [Allgemeine Funktionen](#CWL_QuerySyntax-general-functions)
+ [JSON-Funktionen](#CWL_QuerySyntax-json-functions)
+ [IP-Adressenzeichenfolgen](#CWL_QuerySyntax-IPaddress-functions)
+ [Zeichenfolgenfunktionen](#CWL_QuerySyntax-string-functions)

## Arithmetische Operatoren
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Arithmetische Operationen akzeptieren numerische Datentypen als Argumente und liefern numerische Ergebnisse. Sie können arithmetische Operationen in den Befehlen `filter` und `fields` sowie als Argumente für andere Funktionen verwenden. 


| Operation | Description | 
| --- | --- | 
|  `a + b` |  Addition  | 
|  `a - b` |  Subtraktion  | 
|  `a * b` |  Multiplikation  | 
|  `a / b` |  Division  | 
|  `a ^ b` |   Potenzierung. `2 ^ 3` gibt `8` zurück   | 
|  `a % b` |   Rest oder Modulus. `10 % 3` gibt `1` zurück   | 

## Boolesche Operatoren
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Sie können die booleschen Operatoren `and`, `or`, und `not` verwenden. 

**Anmerkung**  
 Verwenden Sie boolesche Operatoren nur in Funktionen, die den Wert von**WAHR**oder**FALSCH**aus. 

## Vergleichsoperatoren
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Vergleichsoperationen akzeptieren alle Datentypen als Argumente und liefern ein boolesches Ergebnis. Sie können Vergleichsoperationen im Befehl `filter` sowie als Argumente für andere Funktionen verwenden. 


| Operator | Description | 
| --- | --- | 
|   `=`   |   Gleich   | 
|   `!=`   |   Ungleich   | 
|   `<`   |   Kleiner als   | 
|  `>` |   Größer als   | 
|  `<=` |   Kleiner als oder gleich   | 
|   `>=`   |   Größer als oder gleich   | 

## Numerische Operatoren
<a name="CWL_QuerySyntax-operations-numeric"></a>

 Numerische Operationen akzeptieren numerische Datentypen als Argumente und liefern numerische Ergebnisse. Sie können numerische Operationen in den Befehlen `filter` und `fields` sowie als Argumente für andere Funktionen verwenden. 


| Operation | Ergebnistyp | Description | 
| --- | --- | --- | 
|   `abs(a: number)`   |   number   |   Absoluter Wert   | 
|   `ceil(a: number)`   |   number   |   Aufrunden (die kleinste ganze Zahl, die größer ist als der Wert von `a`).   | 
|   `floor(a: number)`   |  number |   Abrunden (die größte ganze Zahl, die kleiner ist als der Wert von `a`).   | 
|   `greatest(a: number, ...numbers: number[])`   |   number   |   Liefert den größten Wert.   | 
|   `least(a: number, ...numbers: number[])`   |  number |   Liefert den kleinsten Wert.   | 
|   `log(a: number)`   |   number   |   Natürlicher Logarithmus   | 
|   `sqrt(a: number)`   |   number   |   Quadratwurzel   | 

## Strukturtypen
<a name="CWL_QuerySyntax-structure-types"></a>

 Eine Karte oder Liste ist ein Strukturtyp in CloudWatch Logs Insights, mit dem Sie auf Attribute zugreifen und diese für Abfragen verwenden können. 

**Beispiel: Um eine Karte oder Liste abzurufen**  
 Wird verwendet`jsonParse`, um ein Feld, das eine JSON-Zeichenfolge ist, in eine Map oder eine Liste zu parsen. 

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

**Beispiel: Um auf Attribute zuzugreifen**  
 Verwenden Sie den Punktzugriffsoperator (map.attribute), um auf Elemente in einer Map zuzugreifen. Wenn ein Attribut in einer Map Sonderzeichen enthält, verwenden Sie Backticks, um den Attributnamen einzuschließen (map.attributes). `special.char`). 

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

 Verwenden Sie den Klammer-Zugriffsoperator (list [index]), um ein Element an einer bestimmten Position in der Liste abzurufen. 

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

 Umbrechen Sie Sonderzeichen in Backticks (``), wenn Sonderzeichen im Schlüsselnamen enthalten sind. 

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

**Beispiel: leere Ergebnisse**  
 Karten und Listen werden für Zeichenketten-, Zahlen- und Datetime-Funktionen als Null behandelt. 

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

 Der Vergleich von Karte und Liste mit allen anderen Feldern führt zu`false`. 

**Anmerkung**  
 Die Verwendung von Map und List in `dedup``pattern`,`sort`, und wird `stats` nicht unterstützt. 

## Datum-/Uhrzeit-Funktionen
<a name="CWL_QuerySyntax-datetime"></a>

 **Datum-/Uhrzeit-Funktionen** 

 Sie können die Datums-/Uhrzeit-Funktionen in den Befehlen `fields` und `filter` sowie als Argumente für andere Funktionen verwenden. Mit diesen Funktionen können Sie Zeiträume für Abfragen mit Aggregationsfunktionen anlegen. Verwenden Sie Zeiträume, die aus einer Zahl und einem der folgenden Werte bestehen:
+ `ms`für Millisekunden 
+ `s`für Sekunden 
+ `m`für Minuten 
+ `h`stundenlang 

 Zum Beispiel steht `10m` für 10 Minuten und `1h` ist 1 Stunde. 

**Anmerkung**  
Verwenden Sie die am besten geeignete Zeiteinheit für Ihre Datetime-Funktion. CloudWatch Logs begrenzt Ihre Anfrage auf die von Ihnen gewählte Zeiteinheit. Beispielsweise wird für jede Anfrage, die verwendet, eine Obergrenze von 60 als Maximalwert festgelegt`s`. Wenn Sie also angeben`bin(300s)`, implementiert CloudWatch Logs dies tatsächlich als 60 Sekunden, da 60 die Anzahl der Sekunden in einer Minute ist, sodass CloudWatch Logs keine höhere Zahl als 60 verwendet`s`. Um einen 5-Minuten-Bucket zu erstellen, verwenden Sie `bin(5m)` stattdessen.  
Die Obergrenze für `ms` ist 1000, die Obergrenzen für `s` und `m` sind 60 und die Obergrenze für `h` ist 24.

Die folgende Tabelle enthält eine Liste der verschiedenen Datetime-Funktionen, die Sie in Ihren Abfragebefehlen verwenden können. Die Tabelle listet den Ergebnistyp jeder Funktion auf und enthält zu jeder Funktion eine Beschreibung. 

**Tipp**  
 Wenn Sie einen Abfragebefehl erstellen, können Sie mit der Zeitintervallauswahl einen Zeitraum für Ihre Abfrage festlegen. Sie können beispielsweise Intervalle von 5 bis 30 Minuten, Intervalle von 1, 3 und 12 Stunden oder einen benutzerdefinierten Zeitrahmen festlegen. Sie können auch Zeiträume zwischen bestimmten Daten festlegen. 


| Funktion | Ergebnistyp | Description | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Zeitstempel |  Rundet den Wert von `@timestamp` auf den angegebenen Zeitraum und kürzt ihn dann. `bin(5m)` rundet beispielsweise den Wert von `@timestamp` auf die nächstgelegenen fünf Minuten. So können mehrere Protokolleinträge in einer Abfrage gruppiert werden. Im folgenden Beispiel wird die Anzahl von Ausnahmen pro Stunde zurückgegeben: <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> Für die Funktion `bin` werden folgende Zeiteinheiten und Abkürzungen unterstützt. Alle Einheiten und Abkürzungen, die mehr als ein Zeichen enthalten, können durch Hinzufügen von „s“ pluralisiert werden. Somit kann sowohl `hr` als auch `hrs` verwendet werden, um Stunden anzugeben. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Zeitstempel |  Kürzt den Zeitstempel auf den angegebenen Zeitraum. Zum Beispiel kürzt `datefloor(@timestamp, 1h)` alle Werte von `@timestamp` auf die letzte volle Stunde.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Zeitstempel |  Rundet den Zeitstempel auf den angegebenen Zeitraum auf und kürzt ihn dann. Zum Beispiel kürzt `dateceil(@timestamp, 1h)` alle Werte von `@timestamp` auf die nächste volle Stunde.  | 
|  `fromMillis(fieldName: number)` |  Zeitstempel |  Interpretiert das Eingabefeld als die Anzahl der Millisekunden seit der Unix-Epoche und konvertiert es in einen Zeitstempel.  | 
|  `toMillis(fieldName: Timestamp)` |  number |  Konvertiert den im benannten Feld gefundenen Zeitstempel in eine Zahl, die die Millisekunden seit der Unix-Epoche darstellt. Beispiel: `toMillis(@timestamp)` konvertiert den Zeitstempel `2022-01-14T13:18:031.000-08:00` zu `1642195111000`.  | 
|  `now()`  |  number  |  Gibt die Uhrzeit in Epochensekunden zurück, zu der die Abfrageverarbeitung gestartet wurde. Diese Funktion akzeptiert keine Argumente. Sie können dies verwenden, um Ihre Abfrageergebnisse nach der aktuellen Uhrzeit zu filtern. Die folgende Abfrage gibt beispielsweise alle 4xx-Fehler der letzten zwei Stunden zurück: <pre>parse @message "Status Code: *;" as statusCode\n <br />| filter statusCode >= 400 and statusCode <= 499  \n <br />| filter toMillis(@timestamp) >= (now() * 1000 - 7200000)</pre> Das folgende Beispiel gibt alle Protokolleinträge der letzten fünf Stunden zurück, die entweder das Wort `error` oder enthalten `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**Anmerkung**  
 Derzeit unterstützt CloudWatch Logs Insights das Filtern von Protokollen mit menschenlesbaren Zeitstempeln nicht. 

## Allgemeine Funktionen
<a name="CWL_QuerySyntax-general-functions"></a>

 **Allgemeine Funktionen** 

 Sie können allgemeine Funktionen in den Befehlen `fields` und `filter` sowie als Argumente für andere Funktionen verwenden. 


| Funktion | Ergebnistyp | Description | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Boolesch   |   Gibt `true` zurück, wenn das Feld existiert.   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Liefert den ersten Nicht-Null-Wert aus der Liste.   | 

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

 **JSON-Funktionen** 

 Verwenden Sie JSON-Funktionen in den `filter` Befehlen `fields` und und als Argumente für andere Funktionen. 


| Funktion | Ergebnistyp | Description | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Karte \$1 Liste \$1 Leer   |   Gibt eine Map oder Liste zurück, wenn die Eingabe eine Zeichenkettendarstellung eines JSON-Objekts oder eines JSON-Arrays ist. Gibt einen leeren Wert zurück, wenn es sich bei der Eingabe nicht um eine der Repräsentationen handelt.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   Zeichenfolge   |   Gibt eine JSON-Zeichenfolge aus einer Karte oder Listendaten zurück.   | 

## IP-Adressenzeichenfolgen
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **IP-Adressenzeichenfolgen** 

 Sie können IP-Adressen-Zeichenfolgenfunktionen in den Befehlen `filter` und `fields` sowie als Argumente für andere Funktionen verwenden. 


| Funktion | Ergebnistyp | Description | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  boolesch |  Gibt zurück`true`, ob das Feld eine gültige IPv4 IPv6 Oder-Adresse ist.  | 
|  `isValidIpV4(fieldName: string)` |  boolesch |  Gibt zurück`true`, ob das Feld eine gültige IPv4 Adresse ist.  | 
|  `isValidIpV6(fieldName: string)` |  boolesch |  Gibt zurück`true`, ob das Feld eine gültige IPv6 Adresse ist.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  boolesch |  Gibt zurück`true`, ob es sich bei dem Feld um eine gültige IPv4 IPv6 Adresse im angegebenen v4- oder v6-Subnetz handelt. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie `192.0.2.0/24` oder `2001:db8::/32`, wobei `192.0.2.0` oder `2001:db8::` der Anfang des CIDR-Blocks ist.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  boolesch |  Gibt zurück`true`, ob das Feld eine gültige IPv4 Adresse innerhalb des angegebenen v4-Subnetzes ist. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie `192.0.2.0/24`, wobei `192.0.2.0` der Anfang des CIDR-Blocks ist.  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  boolesch |  Gibt zurück`true`, ob das Feld eine gültige IPv6 Adresse innerhalb des angegebenen v6-Subnetzes ist. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie `2001:db8::/32`, wobei `2001:db8::` der Anfang des CIDR-Blocks ist.  | 

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

 **Zeichenfolgenfunktionen** 

 Sie können Zeichenfolgenfunktionen in den Befehlen `fields` und `filter` sowie als Argumente für andere Funktionen verwenden. 


| Funktion | Ergebnistyp | Description | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Zahl |  Gibt `1` zurück, wenn das Feld fehlt oder eine leere Zeichenkette ist.  | 
|  `isblank(fieldName: string)` |  Zahl |  Gibt `1` zurück, wenn das Feld fehlt, eine leere Zeichenkette ist oder nur Leerzeichen enthält.  | 
|  `concat(str: string, ...strings: string[])` |  Zeichenfolge |  Verkettet die Zeichenketten.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  Zeichenfolge |  Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von der linken Seite der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen in `trimChars` links von `str`. Beispielsweise gibt `ltrim("xyZxyfooxyZ","xyZ")` `"fooxyZ"` zurück.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  Zeichenfolge |  Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von der rechten Seite der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen von `trimChars` rechts von `str`. Beispielsweise gibt `rtrim("xyZfooxyxyZ","xyZ")` `"xyZfoo"` zurück.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  Zeichenfolge |  Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von beiden Seiten der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen aus `trimChars` von beiden Seiten von `str`. Beispielsweise gibt `trim("xyZxyfooxyxyZ","xyZ")` `"foo"` zurück.  | 
|  `strlen(str: string)` |  number |  Liefert die Länge der Zeichenkette in Unicode-Codepunkten.  | 
|  `toupper(str: string)` |  Zeichenfolge |  Konvertiert die Zeichenkette in Großbuchstaben.  | 
|  `tolower(str: string)` |  Zeichenfolge |  Konvertiert die Zeichenkette in Kleinbuchstaben.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  Zeichenfolge |  Gibt eine Teilzeichenkette aus dem durch das Zahlenargument angegebenen Index bis zum Ende der Zeichenkette zurück. Wenn die Funktion ein zweites Zahlenargument hat, enthält sie die Länge der abzurufenden Teilzeichenkette. Beispielsweise gibt `substr("xyZfooxyZ",3, 3)` `"foo"` zurück.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  Zeichenfolge |  Ersetzt alle Instances von `searchValue` in `fieldName: string` mit `replaceValue`. Beispiel: Die Funktion `replace(logGroup,"smoke_test","Smoke")` sucht nach Protokollereignissen, bei denen das Feld `logGroup` den Zeichenfolgenwert `smoke_test` enthält und den Wert durch die Zeichenfolge `Smoke` ersetzt.  | 
|  `strcontains(str: string, searchValue: string)` |  number |  Gibt 1 zurück, wenn `str` `searchValue` enthält; ansonsten 0.  | 