where

Utilizzare il comando where per calcolare che il valore di un'espressione sia true o false.

Sintassi

*|where <expression>

Operatori disponibili con il comando

La tabella seguente elenca gli operatori disponibili con il comando where.

Categoria Esempio

Operatori Arithmetic

+, -, *, /, %

Operatori di confronto

=, !=, <, >, <=, >=

Operatori logici

and, or, not

Operatori condizionali

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

Più operatori di confronto

in, not in

Funzioni disponibili con il comando

La tabella seguente elenca le funzioni disponibili con il comando where.

Categoria Esempio

Funzioni di stringa

  • capitalize(String)

  • concat(String, String)

  • contains(String, String)

  • decode64(String)

    Nota: se il valore stringa è un campo, deve fare distinzione tra maiuscole e minuscole.

  • 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)

Funzioni numeriche

  • abs(number)

  • ceil(number)

  • floor(number)

  • formatduration(number)

  • max(number, number)

  • min(number, number)

  • power(number, int)

  • round(number, int)

  • sqrt(number)

  • tostring(number)

Funzioni data

  • dateadd(date, property, amount)

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

  • formatdate(ate [,format])

  • now()

Funzioni condizionali

  • cidrmatch(String, String)

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

Funzioni hash

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Nota

  • Per la funzione concat(), è possibile immettere tipi di dati numerici come numero intero, a virgola mobile o lungo. I campi numerici da convertire automaticamente nei valori stringa corrispondenti.

  • È possibile usare il comando || per concatenare il numero di input n. Anche in questo caso è possibile inserire tipi di dati numerici che verranno convertiti automaticamente nei corrispondenti valori di stringa.

Parametri

La tabella seguente elenca i parametri utilizzati in questo comando e le relative descrizioni.

Parametro descrizione;

boolean_expression

Specificare l'espressione per la quale deve essere calcolato il valore true o false.

Stringhe temporali user-friendly nei confronti

La nuova funzionalità consente di utilizzare una stringa leggibile dall'utente per manipolare il tempo nella query. In passato era necessario utilizzare toDuration() e fornire la durata in un formato molto specifico.

Esempio 1: aggiungere una durata a un campo indicatore orario.

* 
| eval '10mins. after End Time' = 'Event End Time' + 10mins
| fields 'Event End Time', '10mins. after End Time'

Esempio 2: trovare i job che hanno richiesto più di 2 ore.

* | where 'Event End Time' - Time > 2hrs

Esempio 3: trovare gli elementi che hanno richiesto più di un giorno o meno di pochi millisecondi.

* 
| link 
| where Count > 1000 and 
       ('End Time' - 'Start Time' > 3hour or 'End Time' - 'Start Time' < 2ms) 

La stringa dell'ora può essere utilizzata nel parametro span per timestats. Vedere l'elenco di valori per timescale in timestats.

Di seguito sono riportati alcuni esempi 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)

L'esempio riportato di seguito mostra l'uso della funzione condizionale if.

*|where if(Status = '200', OK, ERROR) = ERROR

L'esempio seguente confronta gli indirizzi IP nel campo srvrhostip con un intervallo di sottoreti.

*|where cidrmatch(srvrhostip, '192.0.2.254/25')

Nell'esempio seguente viene restituito il valore stringa del campo Ritardo.

*|where Status = literal(Delay)

Nell'esempio seguente viene rimosso il carattere corrispondente da entrambe le estremità.

*|where trim(Command,"\") = initparams

L'esempio seguente rimuove il carattere corrispondente dall'estremità sinistra.

*|where ltrim('Error ID',0) = 76890

L'esempio seguente rimuove il carattere corrispondente dall'estremità destra.

*|where rtrim('OS Process ID',2) = 3123

Nell'esempio seguente la stringa Start Time viene confrontata con 1/1/18 nel formato data MM/dd/yy.

*|where 'Start Time' > toDate('1/1/18', 'MM/dd/yy')

Nell'esempio seguente viene calcolata la differenza tra i valori di End Time e Start Time e la stringa viene confrontata con la durata di 0:0:45.

*|where 'End Time' - 'Start Time' > toDuration('0:0:45') 

L'esempio seguente specifica il formato della durata come 0:0:45.000.

*|where formatDuration('End Time' - 'Start Time') = '0:0:45.000'

Gli esempi riportati di seguito illustrano l'uso delle funzioni 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

L'esempio seguente calcola la posizione di .com nella stringa uri e valuta se non è uguale a -1.

*| where indexOf(uri, '.com') != -1

È possibile utilizzare le funzioni hash md5, sha1, sha256 e sha512 con il comando where per filtrare i dati di log. L'esempio seguente valuta se il valore del campo user è md5("jack").

*|where user = md5("jack")

Il comando seguente separa il contenuto del campo entità in due parti. Ad esempio, il valore entità host-phx-1.oraclevcn.com con pattern verrà diviso in due campi virtuali denominati Host e Dominio, con il valore dominio oraclevcn.com:

* | extract field = Entity '(?P<Host>\w+)\.?(?P<Domain>.*)'
 | where contains(Domain, 'oraclevcn.com')
 | timestats count as logrecords by 'Log Source'