where
Utilizzare il comando where
per calcolare che il valore di un'espressione sia true o false.
argomenti:
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 |
|
Funzioni numeriche |
|
Funzioni data |
|
Funzioni condizionali |
|
Funzioni hash |
|
-
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; |
---|---|
|
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.
Per esempi sull'uso del comando where
negli scenari standard, vedere:
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'