where

Utilice el comando where para calcular el valor de una expresión como true o false.

Sintaxis

*|where <expression>

Operadores disponibles con el comando

En la siguiente tabla se muestran los operadores disponibles con el comando where.

Categoría Ejemplo

Operadores aritméticos

+, -, *, /, %

Operadores de comparación

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

Operadores lógicos

and, or, not

Operadores condicionales

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

Varios operadores de comparación

in, not in

Funciones disponibles con el comando

En la tabla siguiente se muestran las funciones disponibles con el comando where.

Categoría Ejemplo

Funciones de cadena

  • capitalize(String)

  • concat(String, String)

  • contains(String, String)

  • decode64(String)

    Nota: si el valor de cadena es un campo, debe ser sensible a mayúsculas/minúsculas.

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

Funciones numéricas

  • abs(number)

  • ceil(number)

  • floor(number)

  • formatduration(number)

  • max(number, number)

  • min(number, number)

  • power(number, int)

  • round(number, int)

  • sqrt(number)

  • tostring(number)

Funciones de fecha

  • dateadd(date, property, amount)

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

  • formatdate(ate [,format])

  • now()

Funciones condicionales

  • cidrmatch(String, String)

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

Funciones hash

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Nota

  • Para la función concat(), puede introducir tipos de dato numéricos, como entero, flotante o largo. Los campos numéricos se convertirán automáticamente en los valores de cadena correspondientes.

  • Puede utilizar || para concatenar n entradas. Aquí también puede introducir tipos de datos numéricos, que se convertirán automáticamente en los valores de cadena correspondientes.

Parámetros

En la siguiente tabla se muestran los parámetros utilizados en este comando, junto con sus descripciones.

Parámetro Descripción

boolean_expression

Especifique la expresión para la que se deba calcular el valor true o false.

Cadenas de Tiempo Fáciles de Usar en Comparaciones

La nueva capacidad permite utilizar una cadena legible por humanos para manipular el tiempo en la consulta. En el pasado, esto requería el uso de toDuration() y proporcionar la duración en un formato muy específico.

Ejemplo 1: agregue una duración a un campo de registro de hora.

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

Ejemplo 2: busque trabajos que hayan tardado más de 2 horas.

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

Ejemplo 3: busque elementos que hayan tardado más de un día o menos de unos pocos milisegundos.

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

La cadena de tiempo puede ser el valor utilizado en el parámetro span para timestats. Consulte la lista de valores de timescale en timestats.

A continuación, se incluyen algunos ejemplos del comando 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)

En el siguiente ejemplo se muestra el uso de la función condicional if:

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

En el siguiente ejemplo se comparan las direcciones IP del campo srvrhostip con un rango de subredes.

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

El siguiente ejemplo devuelve el valor de cadena del campo Retraso.

*|where Status = literal(Delay)

En el siguiente ejemplo se elimina el carácter coincidente de ambos extremos.

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

En el siguiente ejemplo se elimina el carácter coincidente del extremo izquierdo.

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

En el siguiente ejemplo se elimina el carácter coincidente del extremo derecho.

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

En el siguiente ejemplo se compara la cadena Start Time con 1/1/18 con el formato de fecha MM/dd/yy.

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

En el siguiente ejemplo se calcula la diferencia entre los valores de End Time y Start Time y compara la cadena con la duración de 0:0:45.

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

En el siguiente ejemplo se especifica el formato de la duración como 0:0:45.000.

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

Los ejemplos que se citan a continuación ilustran la utilización de funciones de fecha.

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

En el siguiente ejemplo se calcula la posición de .com en la cadena uri y se evalúa si no es igual a -1.

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

Puede utilizar las funciones hash md5, sha1, sha256 y sha512 con el comando where para filtrar los datos del log. En el siguiente ejemplo se evalúa si el valor del campo user es md5("jack").

*|where user = md5("jack")

Con el siguiente comando se separa el contenido del campo de entidad en dos partes. Por ejemplo, el valor de entidad host-phx-1.oraclevcn.com con patrón se dividiría en dos campos virtuales denominados Host y Dominio, con el valor de dominio oraclevcn.com:

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