where

Use o comando where para calcular o valor de uma expressão para ser verdadeira ou falsa.

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

  • capitalize(String)

  • concat(String, String)

  • contains(String, String)

  • decode64(String)

    Observação: Se o valor da string for um campo, ele deverá fazer distinção entre maiúsculas e 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)

Funções 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)

Funções de Data

  • dateadd(date, property, amount)

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

  • formatdate(ate [,format])

  • now()

Funções Condicionais

  • cidrmatch(String, String)

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

Funções de Hash

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Observação

  • 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

boolean_expression

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'