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. Siehe auch Benutzerfreundliche Zeitzeichenfolgen in Vergleichen.

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)

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

  • 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)

  • distance(number, number, number, number)

    Der von der Funktion zurückgegebene Wert ist in Meilen angegeben. Die Zahlen sind in Grad. toRadians() konvertiert Grad in Radiant.

  • distance(string, string)

    Der von der Funktion zurückgegebene Wert ist in Meilen angegeben. Die Zahlen sind in Grad.

  • 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)

  • contains(String, String)

  • endsWith(String, String)

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

  • startsWith(String, String)

Hashfunktionen

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Trigonometrische Funktionen

  • arccos(<number>)

    Bogenkosinus eines Winkels.

  • arcsin(<number>)

    Bogen Sinus eines Winkels.

  • arctan(<number>)

    Bogen Tangente eines Winkels.

  • atan2(<numbera>,<numberb>)

    Winkel in Radien auf einer Polarkoordinate, für die kartesischen Koordinaten a und b.

  • cos(<number>)

    Trigonometrischer Kosinus eines Winkels.

  • e()

    Wert der mathematischen Konstante e.

  • pi()

    Wert von Pi.

  • sin(<number>)

    Trigonometrischer Sinus eines Winkels in Radien.

  • tan(<number>)

    Tangens eines Winkels.

  • toDegrees(<number>)

    Umrechnen von Radianten in Grad.

  • toRadians(<number>)

    Umrechnen von Grad in Radiant.

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 erforderlich, indem Sie toDuration() verwenden und die Dauer in einem ganz bestimmten Format angeben.

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 länger als 2 Stunden dauerten.

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

Beispiel 3: Suchen Sie nach Elementen, die mehr als einen Tag oder weniger als wenige Millisekunden in Anspruch genommen 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 Werteliste für timescale in 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 endsWith(uri, '.com')
*|where startsWith(uri, 'http://oracle')
*|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)
*| where arccos(angle) != NaN
*| where arcsin(angle) != NaN
*| where arctan(angle) != NaN
*| where atan2(x, y) != null
*| where cos(angle) > 0
*| where sin(angle) > e()
*| where sin(angle) > pi()
*| where sin(angle) > 0
*| where tan(angle) > 0
*| where toDegrees(angle) > 45
* | where toRadians(angle) > 0

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 dem Muster würde in zwei virtuelle Felder namens 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'

Der folgende Befehl berechnet den Abstand (in Meilen) zwischen zwei Paaren lat-long Koordinaten, die in Grad angegeben sind, wenn die Eingabewerte Zahlen sind, und prüft, ob dieser Abstand größer als 1000 ist:

* | where distance(lat1, long1, lat2, long2) > 1000 

Der folgende Befehl berechnet den Abstand (in Meilen) zwischen zwei Paaren lat-long Koordinaten (in Grad), wenn die Eingabewerte zwei Zeichenfolgen sind, und prüft, ob dieser Abstand größer als 1000 ist:

* | where distance('lat1,long1', 'lat2,long2') > 1000