where

Utilisez la commande where pour calculer la valeur d'une expression comme étant vraie ou fausse.

Syntaxe

*|where <expression>

Opérateurs disponibles avec la commande

Le tableau suivant répertorie les opérateurs disponibles avec la commande where. Voir aussi Chaînes de temps conviviales dans les comparaisons.

Catégorie Exemple

Opérateurs arithmétiques

+, -, *, /, %

Opérateurs de comparaison

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

Opérateurs logiques

and, or, not

Opérateurs conditionnels

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

Opérateurs de comparaison multiple

in, not in

Fonctions disponibles avec la commande

Le tableau suivant répertorie les fonctions disponibles avec la commande where.

Catégorie Exemple

Fonctions de chaîne

  • capitalize(String)

  • concat(String, String)

    • Pour la fonction concat(), vous pouvez entrer des types de données numériques tels que nombre entier, nombre à virgule flottante ou nombre long. Champs numériques à convertir automatiquement en valeurs de chaîne correspondantes.

    • Vous pouvez utiliser || pour concaténer n entrées. Ici aussi, vous pouvez entrer des types de données numériques qui seront automatiquement convertis en valeurs de chaîne correspondantes.

  • decode64(String)

    Note : Si la valeur de la chaîne est un champ, il doit s'agir d'un champ sensible à la casse.

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

Fonctions numériques

  • abs(number)

  • ceil(number)

  • distance(number, number, number, number)

    La valeur retournée par la fonction est en milles. Les nombres sont en degrés. toRadians() convertit les degrés en radians.

  • distance(string, string)

    La valeur retournée par la fonction est en milles. Les chiffres sont en degrés.

  • floor(number)

  • formatduration(number)

  • max(number, number)

  • min(number, number)

  • power(number, int)

  • round(number, int)

  • sqrt(number)

  • tostring(number)

Fonctions de date

  • dateadd(date, property, amount)

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

  • formatdate(ate [,format])

  • now()

Fonctions conditionnelles

  • cidrmatch(String, String)

  • contains(String, String)

  • endsWith(String, String)

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

  • startsWith(String, String)

Fonctions de hachage

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Fonctions trigonométriques

  • arccos(<number>)

    L'arc cosinus d'un angle.

  • arcsin(<number>)

    Arc sinus d'un angle.

  • arctan(<number>)

    Arc tangent d'un angle.

  • atan2(<numbera>,<numberb>)

    Angle en radians sur une coordonnée polaire, pour les coordonnées cartésiennes a et b.

  • cos(<number>)

    cosinus trigonométrique d'un angle.

  • e()

    Valeur de la constante mathématique e.

  • pi()

    Valeur de pi.

  • sin(<number>)

    sinus trigonométrique d'un angle en radians.

  • tan(<number>)

    Tangente d'un angle.

  • toDegrees(<number>)

    Convertissez les radians en degrés.

  • toRadians(<number>)

    Convertir des degrés en radians.

Paramètres

Le tableau suivant répertorie les paramètres utilisés dans cette commande, ainsi que leur description.

Paramètre Description

boolean_expression

Indiquez l'expression pour laquelle la valeur Vrai ou Faux doit être calculée.

Chaînes de temps conviviales dans les comparaisons

La nouvelle fonctionnalité permet d'utiliser une chaîne lisible par un humain pour manipuler le temps dans l'interrogation. Dans le passé, cela nécessitait l'utilisation de toDuration() et la fourniture de la durée dans un format très spécifique.

Exemple 1 : Ajoutez une durée à un champ d'horodatage.

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

Exemple 2 : Rechercher les tâches qui ont pris plus de 2 heures.

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

Exemple 3 : Rechercher les articles qui ont pris plus d'un jour ou moins de quelques millisecondes.

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

La chaîne de temps peut être une valeur utilisée dans le paramètre span pour timestats. Voir la liste de valeurs pour timescale dans timestats.

Voici quelques exemples de la commande 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

L'exemple suivant montre l'utilisation de la fonction conditionnelle if :

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

L'exemple suivant compare les adresses IP du champ srvrhostip à un intervalle de sous-réseaux.

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

L'exemple suivant retourne la valeur de chaîne du champ Delay.

*|where Status = literal(Delay)

L'exemple suivant supprime le caractère de mise en correspondance des deux extrémités.

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

L'exemple suivant supprime le caractère de mise en correspondance de l'extrémité gauche.

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

L'exemple suivant supprime le caractère de mise en correspondance de l'extrémité droite.

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

L'exemple suivant compare la chaîne Start Time à 1/1/18 dans le format de date MM/dd/yy.

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

L'exemple suivant calcule la différence entre les valeurs End Time et Start Time et compare la chaîne avec la durée de 0:0:45.

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

L'exemple suivant indique le format de la durée comme 0:0:45.000.

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

Les exemples suivants illustrent l'utilisation des fonctions de date.

*|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

L'exemple suivant calcule la position de .com dans la chaîne uri et évalue si elle n'est pas égale à -1.

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

Vous pouvez utiliser les fonctions de hachage md5, sha1, sha256 et sha512 avec la commande WHERE pour filtrer les données des journaux. L'exemple suivant évalue si la valeur du champ user est md5("jack").

*|where user = md5("jack")

La commande suivante sépare le contenu du champ d'entité en deux parties. Par exemple, la valeur d'entité host-phx-1.oraclevcn.com avec modèle serait fractionnée en deux champs virtuels nommés Hôte et Domaine, avec la valeur de domaine oraclevcn.com :

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

La commande suivante calcule la distance (en milles) entre deux paires de coordonnées lat-longues spécifiées en degrés, lorsque les valeurs d'entrée sont des nombres, et vérifie si cette distance est supérieure à 1000 :

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

La commande suivante calcule la distance (en milles) entre deux paires de coordonnées lat-longues (en degrés), lorsque les valeurs d'entrée sont deux chaînes, et vérifie si cette distance est supérieure à 1000 :

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