where
Use o comando where
para calcular o valor de uma expressão para ser verdadeira ou falsa.
Tópicos:
Sintaxe
*|where <expression>
Operadores Disponíveis com o Comando
A tabela a seguir lista os operadores disponíveis com o comando where
.
Categoria | Exemplo |
---|---|
Operadores Aritméticos |
+ , - , * , / , % |
Operadores de Comparação |
= , != , < , > , <= , >= |
Operadores Lógicos |
and , or , not |
Operadores Condicionais |
if(<expression>,<expression>,<expression>) |
Vários Operadores de Comparação |
in , not in |
Funções disponíveis com o comando
A tabela a seguir lista as funções disponíveis com o comando where
.
Categoria | Exemplo |
---|---|
Funções de String |
|
Funções Numéricas |
|
Funções de Data |
|
Funções Condicionais |
|
Funções de Hash |
|
-
Para a função
concat()
, você pode inserir tipos de dados numéricos como inteiro, flutuante ou longo. Os campos numéricos que serão convertidos automaticamente nos valores de string correspondentes. -
Você pode usar
||
para concatenar n número de entradas. Aqui também, você pode inserir tipos de dados numéricos que serão convertidos automaticamente nos valores de string correspondentes.
Parâmetros
A tabela a seguir lista os parâmetros usados nesse comando, com suas descrições.
Parâmetro | Descrição |
---|---|
|
Especifique a expressão cujo valor verdadeiro ou falso precisa ser calculado. |
Strings de Tempo Amigáveis ao Usuário em Comparações
O novo recurso permite que uma string legível por humanos seja usada para manipular o tempo na consulta. No passado, isso exigia o uso de toDuration()
e o fornecimento da duração em um formato muito específico.
Exemplo 1: Adicione uma duração a um campo de timestamp.
*
| eval '10mins. after End Time' = 'Event End Time' + 10mins
| fields 'Event End Time', '10mins. after End Time'
Exemplo 2: Localize jobs que levaram mais de 2 horas.
* | where 'Event End Time' - Time > 2hrs
Exemplo 3: Localize itens que levaram mais de um dia ou menos de alguns milissegundos.
*
| link
| where Count > 1000 and
('End Time' - 'Start Time' > 3hour or 'End Time' - 'Start Time' < 2ms)
A string de tempo pode ser um valor usado no parâmetro span
para timestats
. Veja a lista de valores para timescale
em timestats.
Para obter exemplos de como usar o comando where
em cenários típicos, consulte:
A seguir, alguns exemplos do 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)
O exemplo a seguir mostra o uso da função condicional if
:
*|where if(Status = '200', OK, ERROR) = ERROR
O exemplo a seguir compara os endereços IP no campo srvrhostip
com uma faixa de sub-redes.
*|where cidrmatch(srvrhostip, '192.0.2.254/25')
O exemplo a seguir retorna o valor da string do campo Atraso.
*|where Status = literal(Delay)
O exemplo a seguir remove o caractere correspondente das duas extremidades.
*|where trim(Command,"\") = initparams
O exemplo a seguir remove o caractere correspondente da extremidade esquerda.
*|where ltrim('Error ID',0) = 76890
O exemplo a seguir remove o caractere correspondente do lado direito.
*|where rtrim('OS Process ID',2) = 3123
O exemplo a seguir compara a string Start Time
com 1/1/18
no formato de data MM/dd/yy
.
*|where 'Start Time' > toDate('1/1/18', 'MM/dd/yy')
O exemplo a seguir calcula a diferença entre os valores de End Time
e Start Time
e compara a string com a duração de 0:0:45
.
*|where 'End Time' - 'Start Time' > toDuration('0:0:45')
O exemplo a seguir especifica o formato da duração como 0:0:45.000
.
*|where formatDuration('End Time' - 'Start Time') = '0:0:45.000'
Os exemplos a seguir ilustram o uso das funções de data.
*|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
O exemplo a seguir calcula a posição de .com
na string uri
e avalia se ela não é igual a -1
.
*| where indexOf(uri, '.com') != -1
Você pode usar as funções de hash md5, sha1, sha256 e sha512 com o comando where para filtrar dados de log. O exemplo a seguir avalia se o valor do campo user
é md5("jack")
.
*|where user = md5("jack")
O comando a seguir separa o conteúdo do campo da entidade em duas partes. Por exemplo, o valor de entidade host-phx-1.oraclevcn.com
com padrão seria dividido em dois campos virtuais chamados Host e Domínio, com o valor de domínio oraclevcn.com
:
* | extract field = Entity '(?P<Host>\w+)\.?(?P<Domain>.*)'
| where contains(Domain, 'oraclevcn.com')
| timestats count as logrecords by 'Log Source'