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. Vedere anche Stringhe temporali facili da usare nei confronti.
| Categoria | Esempio |
|---|---|
|
Operatori Arithmetic |
+, -, *, /, % |
|
Operatori di confronto |
=, !=, <, >, <=, >= |
|
Operatori logici |
and, or, not |
|
Operatori condizionali |
if(<expression>,<expression>,<expression>) |
|
Operatori di confronto multipli |
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 |
|
|
Funzioni trigonometriche |
|
Parametri
Nella tabella seguente sono elencati i parametri utilizzati in questo comando, insieme alle relative descrizioni.
| Parametro | Descrizione |
|---|---|
|
|
Specificare l'espressione per la quale deve essere calcolato il valore true o false. |
Stringhe di tempo facili da usare nei confronti
La nuova funzionalità consente di utilizzare una stringa leggibile dall'utente per manipolare il tempo nella query. In passato, questo richiedeva l'utilizzo di toDuration() e 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: ricerca di job che richiedevano più di 2 ore.
* | where 'Event End Time' - Time > 2hrs
Esempio 3: ricerca di elementi che richiedevano 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 temporale può essere un valore utilizzato nel parametro span per timestats. Vedere l'elenco di valori per timescale in timestat.
Per esempi di utilizzo del comando where in scenari tipici, vedere:
Ecco 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 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
L'esempio seguente mostra l'uso della funzione condizionale if.
*|where if(Status = '200', OK, ERROR) = ERRORL'esempio seguente mostra l'uso della funzione condizionale anyOf. Restituisce i valori di severità che iniziano con d o iniziano con f:
* | distinct Severity | where anyof(substr(Severity, 0, 1) = d, substr(Severity, 0, 1) = f)L'esempio seguente mostra l'uso della funzione condizionale allOf. Restituisce i valori di severità che iniziano con f e non sono fatal:
* | distinct Severity | where allof(Severity != fatal, substr(Severity, 0, 1) = f)L'esempio seguente mostra l'uso della funzione condizionale anyFields. Corrisponde ai log con uno qualsiasi dei campi numerici che terminano con lunghezza e hanno un valore 2:
* | where anyFields('*length') = 2L'esempio seguente mostra l'uso della funzione condizionale allFields. Restituisce i log in cui tutti i campi che iniziano con tar (ad esempio Target, Target Guid, Target Type) sono non nulli:
* | where allfields('tar*') != nullNell'esempio seguente vengono confrontati gli indirizzi IP nel campo srvrhostip con un intervallo di subnet.
*|where cidrmatch(srvrhostip, '192.0.2.254/25')L'esempio seguente restituisce 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,"\") = initparamsNell'esempio seguente viene rimosso il carattere corrispondente dall'estremità sinistra.
*|where ltrim('Error ID',0) = 76890Nell'esempio seguente viene rimosso il carattere corrispondente dall'estremità destra.
*|where rtrim('OS Process ID',2) = 3123Nell'esempio seguente viene confrontato la stringa Start Time 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 End Time e Start Time e viene confrontata la stringa 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 di 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() > 45000Nell'esempio seguente viene calcolata la posizione di .com nella stringa uri e viene valutato 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. Nell'esempio seguente viene valutato 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 dell'entità host-phx-1.oraclevcn.com con pattern viene suddiviso in due campi virtuali denominati Host e Dominio, con il valore del dominio oraclevcn.com:
* | extract field = Entity '(?P<Host>\w+)\.?(?P<Domain>.*)'
| where contains(Domain, 'oraclevcn.com')
| timestats count as logrecords by 'Log Source'Il comando seguente calcola la distanza (in miglia) tra due coppie di coordinate lat-long specificate in gradi, quando i valori di input sono numeri e controlla se tale distanza è maggiore di 1000:
* | where distance(lat1, long1, lat2, long2) > 1000 Il comando seguente calcola la distanza (in miglia) tra due coppie di coordinate lat-long (in gradi), quando i valori di input sono due stringhe e verifica se tale distanza è maggiore di 1000:
* | where distance('lat1,long1', 'lat2,long2') > 1000