where

Utilisez la commande where pour calculer la valeur d'une expression devant renvoyer True ou False.

Syntaxe

*|where <expression>

Opérateurs disponibles avec la commande

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

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 multiples

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)

  • contains(String, String)

  • decode64(String)

    Remarque : si la valeur de chaîne est un champ, il doit être 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)

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

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

Fonctions de hachage

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Remarque

  • Pour la fonction concat(), vous pouvez entrer des types de données numériques (entier, nombre à virgule flottante, long, etc.). Les champs numériques sont remplacés automatiquement par les valeurs de chaîne correspondantes.

  • Vous pouvez utiliser || pour concaténer un nombre n d'entrées. Ici aussi, vous pouvez entrer des types de données numériques qui sont automatiquement remplacés par les valeurs de chaîne correspondantes.

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 True ou False doit être calculée.

Chaînes de temps conviviales dans les comparaisons

Cette nouvelle fonctionnalité permet d'utiliser une chaîne lisible par l'utilisateur pour manipuler le temps dans la requête. Dans le passé, cela nécessitait d'utiliser toDuration() et de fournir 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 : recherchez les travaux qui ont duré plus de 2 heures.

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

Exemple 3 : recherchez les éléments 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 d'heure peut être utilisée dans le paramètre span pour timestats. Reportez-vous à la liste des valeurs pour timescale dans timestats.

Pour obtenir des exemples d'utilisation de la commande where dans des scénarios standard, procédez comme suit :

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

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

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

L'exemple suivant compare les adresses IP du champ srvrhostip avec une plage de sous-réseaux.

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

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

*|where Status = literal(Delay)

L'exemple suivant enlève le caractère correspondant des deux extrémités.

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

L'exemple suivant enlève le caractère correspondant de l'extrémité gauche.

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

L'exemple suivant enlève le caractère correspondant de l'extrémité droite.

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

L'exemple suivant compare la chaîne Start Time à 1/1/18 au 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 à la durée 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 sa différence ou non avec -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 de journal. L'exemple suivant détermine 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 se diviserait 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'