where
Utilice el comando where
para calcular el valor de una expresión como true o false.
Temas:
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 |
|
Funciones numéricas |
|
Funciones de fecha |
|
Funciones condicionales |
|
Funciones hash |
|
-
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 |
---|---|
|
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.
Para ver ejemplos del uso del comando where
en escenarios habituales, consulte:
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'