where

Verwenden Sie den where-Befehl, um den Wert eines Ausdrucks als "true" oder "false" zu berechnen.

Syntax

*|where <expression>

Mit dem Befehl verfügbare Operatoren

In der folgenden Tabelle sind die mit dem Befehl where verfügbaren Operatoren aufgelistet.

Kategorie Beispiel

Arithmetische Operatoren

+, -, *, /, %

Vergleichsoperatoren

=, !=, <, >, <=, >=

Logische Operatoren

and, or, not

Bedingungsoperatoren

if(<expression>,<expression>,<expression>)

Mehrere Vergleichsoperatoren

in, not in

Mit dem Befehl verfügbare Funktionen

In der folgenden Tabelle sind die mit dem Befehl where verfügbaren Funktionen aufgelistet.

Kategorie Beispiel

Zeichenfolgenfunktionen

  • capitalize(String)

  • concat(String, String)

  • contains(String, String)

  • decode64(String)

    Hinweis: Wenn der Zeichenfolgenwert ein Feld ist, muss die Groß-/Kleinschreibung beachtet werden.

  • encode64(String)

  • indexof(String, String [,int])

  • lastindexof(String, String, int)

  • length(String)

  • literal(String)

  • lower(String)

  • ltrim(String, Character)

  • replace(String, String, String)

  • reverse(String)

  • rtrim(String, Character)

  • substr(String, int [, int])

  • todate(String [, format])

  • toduration(String)

  • tonumber(String)

  • trim(String)

  • trim(String, Character)

  • upper(String)

  • urlDecode(String)

  • urlEncode(String)

Numerische Funktionen

  • abs(number)

  • ceil(number)

  • floor(number)

  • formatduration(number)

  • max(number, number)

  • min(number, number)

  • power(number, int)

  • round(number, int)

  • sqrt(number)

  • tostring(number)

Datumsfunktionen

  • dateadd(date, property, amount)

  • dateset(date, property, value [, property, value])

  • formatdate(ate [,format])

  • now()

Bedingungsfunktionen

  • cidrmatch(String, String)

  • if(<expression>, <expression>, <expression>)

Hashfunktionen

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Hinweis

  • Für die concat()-Funktion können Sie numerische Datentypen wie Integer, Float oder Long eingeben. Die numerischen Felder werden automatisch in die entsprechenden Zeichenfolgenwerte konvertiert.

  • Mit || können Sie n Eingaben verketten. Auch hier können Sie numerische Datentypen eingeben, die automatisch in die entsprechenden Zeichenfolgenwerte konvertiert werden.

Parameter

In der folgenden Tabelle sind die in diesem Befehl verwendeten Parameter sowie deren Beschreibungen aufgeführt.

Parameter Beschreibung

boolean_expression

Geben Sie den Ausdruck an, für den der Wert "true" oder "false" berechnet werden soll.

Benutzerfreundliche Zeitzeichenfolgen im Vergleich

Mit der neuen Funktion kann eine menschenlesbare Zeichenfolge verwendet werden, um die Zeit in der Abfrage zu bearbeiten. In der Vergangenheit war dies mit toDuration() und der Angabe der Dauer in einem sehr spezifischen Format erforderlich.

Beispiel 1: Fügen Sie einem Zeitstempelfeld eine Dauer hinzu.

* 
| eval '10mins. after End Time' = 'Event End Time' + 10mins
| fields 'Event End Time', '10mins. after End Time'

Beispiel 2: Suchen Sie nach Jobs, die mehr als 2 Stunden gedauert haben.

* | where 'Event End Time' - Time > 2hrs

Beispiel 3: Suchen Sie nach Elementen, die mehr als einen Tag oder weniger als wenige Millisekunden gedauert haben.

* 
| link 
| where Count > 1000 and 
       ('End Time' - 'Start Time' > 3hour or 'End Time' - 'Start Time' < 2ms) 

Die Zeitzeichenfolge kann ein Wert sein, der im Parameter span für timestats verwendet wird. Siehe die Liste der Werte für timescale unter timestats.

Beispiele zur Verwendung des Befehls where in typischen Szenarios finden Sie unter:

Im Folgenden finden Sie einige Beispiele für den Befehl where.

*|where severity = FATAL
*|where 'Client Host City' = 'redwood city'
*|where upper(severity) = FATAL
*|where length(URI) >= 40
*|where replace('aabbcc', 'bb', 'xx') = aaxxcc
*| where capitalize(severity) = Fatal
*|where concat(host, concat(':', port)) != hostname
*|where contains(uri, '.com')
*|where decode64(value) = decodeValue
*|where encode64(uri) = encodeValue
*|where lastindexOf(uri, '.com') != -1
*|where reverse(Command) = smaraptini
*|where host || ':' || port != hostname
*|where substr('aabbcc', 2, 4) = bb
*|where round('Content Size') = 1000
*|where floor('Content Size') > 1000
*|where max('Content Size In', ''Content Size Out') < 1000
*|where urlDecode('http%3A%2F%2Fexample.com%3A893%2Fsolr%2FCORE_0_0%2Fquery') = URI
*|where urlEncode(uri) = field
*|where 'User Name' in (host1, host2)

Das folgende Beispiel zeigt die Verwendung der Bedingungsfunktion if:

*|where if(Status = '200', OK, ERROR) = ERROR

Im folgenden Beispiel werden die IP-Adressen im Feld srvrhostip mit einem Subnetzbereich verglichen.

*|where cidrmatch(srvrhostip, '192.0.2.254/25')

Das folgende Beispiel gibt den Zeichenfolgenwert des Feldes "Delay" zurück.

*|where Status = literal(Delay)

Im folgenden Beispiel wird das übereinstimmende Zeichen von beiden Enden entfernt.

*|where trim(Command,"\") = initparams

Im folgenden Beispiel wird das übereinstimmende Zeichen vom linken Ende entfernt.

*|where ltrim('Error ID',0) = 76890

Im folgenden Beispiel wird das übereinstimmende Zeichen vom rechten Ende entfernt.

*|where rtrim('OS Process ID',2) = 3123

Im folgenden Beispiel wird die Zeichenfolge Start Time mit 1/1/18 im Datumsformat MM/dd/yy verglichen.

*|where 'Start Time' > toDate('1/1/18', 'MM/dd/yy')

Das folgende Beispiel berechnet die Differenz zwischen den Werten von End Time und Start Time und vergleicht die Zeichenfolge mit der Dauer von 0:0:45.

*|where 'End Time' - 'Start Time' > toDuration('0:0:45') 

Im folgenden Beispiel wird das Format der Dauer als 0:0:45.000 angegeben.

*|where formatDuration('End Time' - 'Start Time') = '0:0:45.000'

Die folgenden Beispiele veranschaulichen die Verwendung von Datumsfunktionen.

*|where 'Start Time' > dateAdd(now(), hour, -1)
*|where 'Start Time' > dateSet(now(), hour, 0, minute, 0, sec, 0, msec, 0)
*|where formatDate('Start Time', 'MM/dd/yyyy') = '01/15/2018'
*|where 'Start Time' - now() > 45000

Das folgende Beispiel berechnet die Position von .com in der uri-Zeichenfolge und wertet aus, ob sie ungleich -1 ist.

*| where indexOf(uri, '.com') != -1

Sie können die Hashfunktionen MD5, SHA1, SHA256 und SHA512 mit dem where-Befehl verwenden, um Logdaten zu filtern. Im folgenden Beispiel wird ausgewertet, ob der Wert des Feldes user md5("jack") lautet.

*|where user = md5("jack")

Der folgende Befehl teilt den Inhalt des Entityfeldes in zwei Teile auf. Beispiel: Der Entitywert host-phx-1.oraclevcn.com mit Muster würde in zwei virtuelle Felder mit dem Namen Host und Domain mit dem Domainwert oraclevcn.com aufgeteilt:

* | extract field = Entity '(?P<Host>\w+)\.?(?P<Domain>.*)'
 | where contains(Domain, 'oraclevcn.com')
 | timestats count as logrecords by 'Log Source'