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. Consulte también User-Friendly Time Strings in Comparisons.
| 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 |
|
|
Funciones trigonométricas |
|
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ácil de Usar en Comparaciones
La nueva capacidad permite utilizar una cadena legible por el usuario para manipular el tiempo en la consulta. En el pasado, era necesario utilizar 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 se puede utilizar en el parámetro span para timestats. Consulte la lista de valores para timescale en timestats.
Para consultar ejemplos del uso del comando where en escenarios habituales, consulte:
Los siguientes son 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 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
En el siguiente ejemplo se muestra el uso de la función condicional if:
*|where if(Status = '200', OK, ERROR) = ERROREn 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,"\") = initparamsEn el siguiente ejemplo se elimina el carácter coincidente del extremo izquierdo.
*|where ltrim('Error ID',0) = 76890En el siguiente ejemplo se elimina el carácter coincidente del extremo derecho.
*|where rtrim('OS Process ID',2) = 3123En 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() > 45000En 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') != -1Puede 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'El siguiente comando calcula la distancia (en millas) entre dos pares de coordenadas lat-long especificadas en grados, cuando los valores de entrada son números, y comprueba si esa distancia es mayor que 1000:
* | where distance(lat1, long1, lat2, long2) > 1000 El siguiente comando calcula la distancia (en millas) entre dos pares de coordenadas lat-long (en grados), cuando los valores de entrada son dos cadenas, y comprueba si esa distancia es mayor que 1000:
* | where distance('lat1,long1', 'lat2,long2') > 1000