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. Consulte também Strings de Tempo Amigas do Usuário em Comparações.
| 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 |
|
|
Funções Trigonométricas |
|
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 do Usuário em Comparações
A nova capacidade permite que uma string legível humana 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. Consulte a lista de valores para timescale em timestats.
Para exemplos de uso do comando where em cenários típicos, consulte:
Estes são 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 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
O exemplo a seguir mostra o uso da função condicional if:
*|where if(Status = '200', OK, ERROR) = ERRORO exemplo abaixo mostra o uso da função condicional anyOf. Retorna os valores de severidade que começam com d ou começam com f:
* | distinct Severity | where anyof(substr(Severity, 0, 1) = d, substr(Severity, 0, 1) = f)O exemplo abaixo mostra o uso da função condicional allOf. Retorna os valores de severidade que começam com f e não são fatal:
* | distinct Severity | where allof(Severity != fatal, substr(Severity, 0, 1) = f)O exemplo abaixo mostra o uso da função condicional anyFields. Corresponde aos logs com qualquer um dos campos numéricos que terminam com length tendo um valor 2:
* | where anyFields('*length') = 2O exemplo abaixo mostra o uso da função condicional allFields. Retorna logs nos quais todos os campos que começam com tar (por exemplo, Destino, Guid de Destino, Tipo de Destino) são não nulos:
* | where allfields('tar*') != nullO 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,"\") = initparamsO exemplo a seguir remove o caractere correspondente da extremidade esquerda.
*|where ltrim('Error ID',0) = 76890O exemplo a seguir remove o caractere correspondente do lado direito.
*|where rtrim('OS Process ID',2) = 3123O 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() > 45000O 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') != -1Você 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 denominados 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'O seguinte comando calcula a distância (em milhas) entre dois pares de coordenadas lat-longas especificadas em graus, quando os valores de entrada são números, e verifica se essa distância é maior que 1000:
* | where distance(lat1, long1, lat2, long2) > 1000 O seguinte comando calcula a distância (em milhas) entre dois pares de coordenadas lat-longas (em graus), quando os valores de entrada são duas strings e verifica se essa distância é maior que 1000:
* | where distance('lat1,long1', 'lat2,long2') > 1000