eval
Utilizzare il comando eval
per calcolare il valore di un'espressione e visualizzare il valore in un nuovo campo.
-
Mentre il comando
stats
calcola le statistiche in base ai campi esistenti, il comandoeval
crea nuovi campi utilizzando campi esistenti ed espressioni arbitrarie. -
Le funzioni di elaborazione delle stringhe, ad esempio
indexof
esubstr
, richiedono più risorse. A causa di ciò, l'esecuzione del comandoeval
con queste funzioni su un numero elevato di record di log o su valori di campo di grandi dimensioni non è consigliata. Estrarre invece questi valori utilizzando le definizioni campi estesi (EFD) o le etichette nell'origine log. Vedere Usa campi estesi nelle origini e Usa etichette nelle origini. -
Assicurarsi che il nome del campo utilizzato nel comando
eval
non contenga i caratteri[
e]
.
Sintassi
Operatori e funzioni disponibili con il comando
*|eval <new_field_name>=<expression>
La tabella seguente elenca gli operatori disponibili con il comando eval
.
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 |
La tabella seguente elenca le funzioni disponibili con il comando eval
.
Categoria | Esempio |
---|---|
Funzioni di stringa |
|
Funzioni numeriche |
|
Funzioni data |
Analogamente al comando
|
Funzioni condizionali |
|
Funzioni hash |
Nota: le funzioni |
-
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 il nome del campo in cui deve essere visualizzato il valore calcolato dell'espressione. |
|
Specificare l'espressione per la quale deve essere calcolato il valore. |
Per esempi sull'utilizzo di questo comando in scenari tipici, vedere:
- Rinominare i campi modificando la query
- Contrassegnare l'unità per un campo al momento della query
- Grafico istogramma
- Visualizzazione dei dati delle serie temporali mediante la funzione Andamento collegamento
- Genera grafici con campi virtuali
- Collegamento mediante l'utilizzo dell'istruzione SQL come campo di analisi
- Analizzare il tempo impiegato tra i passi di una transazione
- Utilizzare le funzioni di navigazione dei collegamenti per identificare gli eventi in un database
- Aggiungi URL a tabella collegamenti
- Usa abbreviazione URL con nome personalizzato
- Utilizzare i simboli di valuta nell'analisi del log
Di seguito sono riportati alcuni esempi del comando eval
.
*|eval newField = 'foo'
*|eval newField = 123
*|eval newField = upper(Target)
*|eval newField = length('hello world')
*|eval s =capitalize(severity)
*|eval newField = concat(host, concat (':', port))
*|eval n = contains(uri, '.com')
*|eval s = decode64(value)
*|eval s = encode64(uri)
*|eval s = reverse(Command)
*|eval newField = host || ':'|| port
*|eval newField = round(123.4)
*|eval newField = floor(4096/1024)+Length
*|eval newField = if (max(Length)(Target), length(Severity)) <= 20, 'OK', 'ERROR')
*|eval newField = urlDecode('http%3A%2F%2Fexample.com%3A893%2Fsolr%2FCORE_0_0%2Fquery')
*|eval s = urlEncode(uri)
*|eval newField = 'Host Name (Destination)' in (host1, host2)
L'esempio seguente confronta gli indirizzi IP nel campo srvrhostip
con un intervallo di sottoreti.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')
Il seguente esempio restituisce la stringa "Target".
*|eval newField = literal(Target)
Nell'esempio seguente vengono rimossi gli spazi e le linguette da entrambe le estremità.
*|eval newField = trim(Label)
Nell'esempio seguente viene rimosso il carattere corrispondente da entrambe le estremità.
*|eval newField = trim('User Name',h)
L'esempio seguente rimuove il carattere corrispondente dall'estremità sinistra.
*|eval newField = ltrim('Error ID',0)
L'esempio seguente rimuove il carattere corrispondente dall'estremità destra.
*|eval newField = rtrim('OS Process ID',2)
Nell'esempio seguente il campo date
viene impostato su Start Date
e il formato della data viene definito come MM/dd/yyyy HH:mm
.
*|eval date = toDate('Start Date', 'MM/dd/yyyy HH:mm')
La funzione toDate
può anche essere utilizzata per gestire l'epoca come segue:
... | where 'Start Time' > toDate(1405544998000)
Nell'esempio seguente il valore del campo duration
viene impostato su 1.30
.
*|eval duration = toduration("1.30")
Nell'esempio seguente il valore del campo duration
viene impostato su un valore numerico che corrisponde alla differenza tra End Time
e Start Time
.
*|eval duration = formatDuration('End Time' - 'Start Time')
Gli esempi riportati di seguito illustrano l'uso delle funzioni data.
*| eval lastHour = dateAdd(now(), hour, -1)
*| eval midnight = dateSet(now(), hour, 0, minute, 0, sec, 0, msec, 0)
*| eval timeOnly = formatDate(now(), 'HH:mm:ss')
*| eval now = now()
È possibile utilizzare le funzioni hash md5, sha1, sha256 e sha512 con il comando eval per filtrare i dati di log. Nell'esempio seguente viene impostato il valore del campo user
con il valore sha1("jane")
.
*|eval user = sha1("jane")
L'esempio seguente converte un'esadecimale in un valore decimale e n restituisce 255:
* | eval n = toNumber('0xFF')
L'esempio seguente converte un numero ottale in un numero decimale e n restituisce 10:
* | eval n = toNumber('012')
Esempi per la funzione unit
Alcuni semplici esempi:
* | eval newField = unit('Content Size', KB)
* | eval 'File Size (bytes)' = unit('File Size', 'byte')
* | eval 'File Size (KB)' = unit('File Size'/1024, 'kb')
* | eval 'File Size (MB)' = unit('File Size'/(1024*1024), 'mb')
* | eval 'Time Taken (Sec)' = unit(Time/1000, 'SEC')
Esempi di unità comuni come byte, valuta e durata:
* | eval Vol = unit('Content Size Out', byte) | stats sum(Vol) as 'Total Volume'
* | eval Sales = unit('Sales Amount', currency_usd) | stats sum('Sales') as 'Total Sales'
* | eval 'Disk Read Time' = unit('Disk Read Time (millis)', ms) | stats avg('Disk Read Time') as 'Avg Disk Read Time'
Eseguire le tre query precedenti nella visualizzazione Casella con l'opzione Numero formato selezionata per ottenere i risultati migliori.
Un campo con dimensioni o durata di tipo unità viene utilizzato per formattare i valori nel grafico Analisi collegamento, negli istogrammi campi aggiuntivi, nella tabella collegamenti e nella visualizzazione casella:
'Log Source' = 'FMW WebLogic Server Access Logs'
| link span = 5minute Time, Server
| stats avg('Duration') as 'Raw Avg. Duration'
avg('Content Size') as 'Raw Avg. Transfer Size'
| eval 'Average Duration' = unit('Raw Avg. Duration', ms)
| eval 'Average Transfer Size' = unit('Raw Avg. Transfer Size', byte)
| classify 'Start Time', 'Average Duration',
'Average Transfer Size' as 'Response Time vs. Download Sizes'
Contrassegnare un campo come contenente dollari USA, migliaia di dollari USA, milioni di dollari USA o miliardi di dollari USA, rispettivamente:
| eval 'Amount in USD' = unit('Sales Price', currency_usd)
| eval 'Amount in Thousands (USD)' = usd('Quarterly Sales', currency_usd_thousand)
| eval 'Amount in Millions (USD)' = usd('Annual Profit', currency_usd_million)
| eval 'Amount in Billions (USD)' = usd('Annual Sales', currency_usd_billion)
Tipi supportati per la funzione unit
Nomi unità:
PERCENT | PCT
- Dimensione dati:
BYTE
KILOBYTE | KB
MEGABYTE | MB
GIGABYTE | GB
TERABYTE | TB
PETABYTE | PB
EXABYTE | EB
- Ora:
MILLISECOND | MS
S | SEC | SECS | SECOND | SECONDS
M | MIN | MINS | MINUTE | MINUTES
H | HR | HRS | HOUR | HOURS
D | DAY | DAYS
W | WEEK | WEEKS
MON | MONTH | MONTHS
Y | YR | YRS | YEAR | YEARS
MICRO | µs
- Potenza:
WATT
KILOWATT | kW
MEGAWATT | MW
GIGAWATT | GW
TERAWATT | TW
PETAWATT | PW
EXAWATT | EW
- Temperatura:
KELVIN | K
CELSIUS | C
FAHRENHEIT | F
- la frequenza:
HERTZ | Hz
KILOHERTZ | kHz
MEGAHERTZ | MHz
GIGAHERTZ | GHz
TERAHERTZ | THz
PETAHERTZ | PHz
EXAHERTZ | EHz
Tipi di valuta supportati nella funzione unit
Questa funzione può essere utilizzata solo per il comando eval
con il comando link
. Per informazioni sull'utilizzo della funzione negli scenari standard, vedere i collegamenti di esempio del comando eval
.
Specificare l'unità di valuta utilizzando il seguente formato:
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_k)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_m)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_b)
I suffissi _k
, _m
e _b
vengono utilizzati per indicare la valuta in migliaia, milioni o miliardi, rispettivamente. Per un elenco completo dei codici valuta, vedere ISO Standards.
NLS_Territory |
Valuta |
---|---|
AFGHANISTAN | AFN |
ALBANIA | ALL |
ALGERIA | DZD |
AMERICA | USD |
ANGOLA | AOA |
ANTIGUA E BARBUDA | XCD |
ARGENTINA | ARS |
ARMENIA | AMD |
ARUBA | AWG |
AUSTRALIA | AUD |
AUSTRIA | EURO |
AZERBAIJAN | AZN |
BAHAMAS | BSD |
BAHREIN | BHD |
BANGLADESH | BDT |
BARBADOS | BBD |
BIELORUSSIA | BYN |
BELGIO | EURO |
BELIZE | BZD |
BERMUDA | BMD |
BOLIVIA | Linea business |
BOSNIA-ERZEGOVINA | BAM |
BOTSWANA | BWP |
BRASILE | BRL |
BULGARIA | BGN |
CAMBOGIA | KHR |
CAMERUN | XAF |
CANADA | CAD |
ISOLE CAYMAN | KYD |
CILE | CLP |
CINA | CNY |
COLOMBIA | COPPIA |
CONGO BRAZZAVILLE | XAF |
CONGO KINSHASA | CDF |
COSTA RICA | CRC |
CROAZIA | HRK |
CURAÇAO | ANG |
CIPRO | EURO |
REPUBBLICA CECA | CZK |
DANIMARCA | DKK |
GIBUTI | DJF |
DOMINICA | XCD |
REPUBBLICA DOMINICANA | DOP |
ECUADOR | USD |
EGITTO | EGP |
EL SALVADOR | SVC |
ESTONIA | EURO |
ETIOPIA | ETB |
FINLANDIA | EURO |
FRANCIA | EURO |
FYR MACEDONIA | MKD |
GABON | XAF |
GEORGIA | GEL |
GERMANIA | EURO |
GHANA | GHS |
GRECIA | EURO |
GRENADA | XCD |
GUATEMALA | Totale generale |
GUYANA | GYD |
HAITI | HTG |
HONDURAS | HNL |
HONG KONG | HKD |
UNGHERIA | HUF |
ISLANDA | ISK |
INDIA | INR |
INDONESIA | IDR |
IRAN | IRR |
IRAQ | IQD |
IRLANDA | EURO |
ISRAELE | ILS |
ITALIA | EURO |
COSTA D'AVORIO | XOF |
GIAMAICA | JMD |
GIAPPONE | JPY |
GIORDANIA | JOD |
KAZAKHISTAN | KZT |
KENYA | KES |
COREA | KRW |
KUWAIT | KWD |
KIRGHIZISTAN | KGS |
LAOS | LAVORO |
LETTONIA | EURO |
LIBANO | LBP |
LIBIA | LYD |
LIECHTENSTEIN | CHF |
LITUANIA | EURO |
LUSSEMBURGO | EURO |
MACAO | MOP |
MALAWI | MWK |
MALESIA | MYR |
MALDIVE | MVR |
MALTA | EURO |
MAURITANIA | MRU |
MAURITIUS | MUR |
MESSICO | MXN |
MOLDAVIA | MDL |
MONTENEGRO | EURO |
MAROCCO | MAD |
MOZAMBICO | MZN |
MYANMAR | MMK |
NAMIBIA | NAD |
NEPALE | NPR |
NUOVA ZELANDA | NZD |
NICARAGUA | NIO |
NIGERIA | NGN |
NORVEGIA | NOK |
OMAN | SMO |
PAKISTAN | Chiave primaria |
PROVINCIA DI PANAMA | Bancomat |
PARAGUAY | PICCOLO |
PERIODO | PENNA |
FILIPPINE | PHP |
POLONIA | PLN |
PORTOGALLO | EURO |
PORTORICO | USD |
QATAR | QAR |
ROMANIA | RON |
RUSSIA | RUB |
SAINT KITTS E NEVIS | XCD |
SAINT LUCIA | XCD |
ARABIA SAUDITA | SAR |
SENEGAL | XOF |
SERBIA | RSD |
SIERRA LEONE | SLL |
SINGAPORE | SGD |
SLOVACCHIA | EURO |
SLOVENIA | EURO |
SOMALIA | SOS |
SUDAFRICA | ZAR |
SUDAN DEL SUD | SSP |
SPAGNA | EURO |
SRI LANKA | LKR |
SUDAN | SDG |
SURINAME | SRD |
SVIZZERA | SZL |
SVEZIA | SEK |
SVIZZERA | CHF |
SIRIA | SIP |
TAIWAN | TWD |
TANZANIA | TZ |
TAILANDIA | THB |
PAESI BASSI | EURO |
TRINIDAD E TOBAGO | Progressivo periodo |
TUNISIA | TND |
TURCHIA | PROVA |
TURKMENISTAN | TMT |
UGANDA | UGX |
UCRAINA | UAH |
EMIRATI ARABI UNITI | AED |
REGNO UNITO | GBP |
URUGUAY | UYU |
UZBEKISTAN | UZS |
VENEZUELA | VES |
VIETNAM | VND |
YEMEN | SÌ |
ZAMBIA | ZMW |
ZIMBABWE | ZWL |
indexof
Dettagli funzione
La sintassi della funzione index0f
:
indexof (String, String [,int])
indexof (String, String [,start_pos]): il conteggio degli indici inizia con 0, restituisce l'indice della corrispondenza a partire da start_pos (se fornito) e restituisce -1 se nessuna corrispondenza.
Nell'esempio seguente viene impostato il valore del campo newField
con la posizione .com
nella stringa uri
.
*|eval newField = indexOf(uri, '.com')
Caso d'uso: estrarre la parte pertinente del percorso API dal campo Log di audit OCI, Percorso
Il campo Percorso contiene un valore simile a /apis/coordination.k8s.io/v1/namespaces/default/leases/oracle.com-oci
.
È possibile estrarre il valore coordination.k8s
dal campo precedente effettuando le operazioni riportate di seguito.
- Trovare la posizione del primo e del secondo
/
utilizzando la funzioneindexOf()
. - Trova la posizione del terzo
/
. - Estrarre i valori dopo il secondo
/
, fino al terzo/
, utilizzando la funzionesubstr()
.
'Log Source' = 'OCI Audit Logs'
| eval firstPos = indexOf(Path, '/')
| eval secondPos = indexOf(Path, '/', firstPos + 1)
| eval API = substr(Path, secondPos + 1, indexOf(Path, '/', secondPos + 1))
| link Path, API
Output di esempio:

lastindexof
Dettagli funzione
La sintassi della funzione lastindexof
:
lastindexof(String, String, int)
lastindexof (String, String [, end_pos]): il conteggio degli indici inizia con 0, restituisce l'indice dell'ultima occorrenza della sottostringa prima di end_pos (se fornito) e restituisce -1 se non viene trovata alcuna corrispondenza. L'argomento end_pos è facoltativo.
Alcuni esempi per l'utilizzo della funzione lastindexof
:
*|eval n = lastindexof(uri, '.com')
Caso d'uso: estrarre l'area dal campo Tipo nei log di audit OCI
Il campo Tipo contiene un valore simile a com.oraclecloud.computeApi.GetInstance
.
Per estrarre computeAPI
dal valore precedente, è possibile utilizzare lo schema seguente:
- Identificare la posizione dell'ultimo
.
utilizzandolastIndexOf()
. - Da questo offset, identificare la posizione del precedente
.
, utilizzando un altrolastIndexOf()
, ma fornendo l'offset da dove eseguire la ricerca indietro. - Estrarre il valore tra queste due posizioni utilizzando
substr()
.
'Log Source' = 'OCI Audit Logs'
| eval lastDot = lastIndexOf(Type, '.')
| eval prevDot = lastIndexOf(Type, '.', lastDot - 1)
| eval Area = substr(Type, prevDot + 1, lastDot)
| link Type, Area
Output di esempio:

replace
Dettagli funzione
La sintassi della funzione replace
:
replace(String, String, String, String, String, ..)
replace
supporta più sostituzioni in una singola funzione. Alcuni esempi per l'utilizzo della funzione replace
:
-
*|eval newField = replace('aabbcc', 'bb', 'xx')
-
*|eval newField = replace('aabbcc', 'bb', 'xx', 'cc', 'yy')
-
Esempio di più azioni di sostituzione in una singola funzione
replace
:* | eval CopiedURL = 'https://cloud.oracle.com/loganalytics/explorer?viz=<VIZ>&encodedQuery=<QUERY>&startTime=<START_TIME>&endTime=<END_TIME>®ion=us-phoenix-1&tenant=testtenant'| eval Query = encode64('* | stats count as "Log Records" by "Log Source"') | eval 'Start Epoch' = toString(toNumber(toDate(dateRelative(30day)))) | eval 'End Epoch' = toString(toNumber(now())) | eval Viz = pie | eval URL = replace(CopiedURL, '<VIZ>', Viz, '<QUERY>', Query, '<START_TIME>', 'Start Epoch', '<END_TIME>', 'End Epoch')
substr
Dettagli funzione
La sintassi della funzione substr
:
substr(String, int [, int])
substr(String, start_pos, end_pos - 1): il conteggio degli indici inizia con start_pos e termina con end_pos - 1.
Nell'esempio seguente, newField
è la sottostringa di aabbcc
dove l'indice iniziale (incluso) è 2
e l'indice finale (escluso) è 4
. Per le stringhe, il conteggio degli indici inizia con 0
. La sottostringa risultante è quindi bb
.
*|eval newField = substr('aabbcc', 2, 4)
Per i casi d'uso in cui viene utilizzata la funzione substr
, vedere indexof Function Details e lastindexof Function Details.
url
Dettagli funzione
La sintassi della funzione url
:
url(String, Name, Parameter)
I valori Nome e Parametro sono facoltativi.
- Stringa: può essere un URL o uno dei nomi brevi predefiniti. Ad esempio:
eval Link = url('https://www.oracle.com')
- Nome: nome facoltativo per l'URL. Ad esempio:
eval Link = url('https://www.oracle.com', 'Oracle Home Page')
- Parametro: parametro facoltativo se si utilizza un collegamento per la stringa. Ad esempio:
eval Link = url('tech', 'Search Oracle', 'ORA-600')
Alcuni esempi per l'utilizzo della funzione url
:
-
* | stats latest(Status) as Status | eval ‘HTTP Status Code’ = url(‘https://www.google.com/search?q=http+code+’, Status, Status)
-
Status != null | eval 'HTTP Status Code' = url('https://www.google.com/search?q=http+code+', Status, Status) | stats count by Status
Esempi di utilizzo della funzione url
dopo il comando link
:
-
* | link status | eval ‘HTTP Status Code’ = url(‘https://www.google.com/search?q=http+code+’, Status, Status)
-
* | link Type | stats latest(Status) as Status | eval ‘HTTP Status Code’ = url(‘[https://www.google.com/search?q=http+code+]’, Status, Status)
Short-cut url
definiti da Oracle
I seguenti collegamenti definiti da Oracle sono disponibili per l'uso con la funzione url
per il comando eval
.
Short-Cut | URL e descrizione | Esempio |
---|---|---|
ora ricerca:oracle |
https://www.google.com/search?q=site:oracle.com%20 Generare un collegamento per cercare tutte le stringhe specificate in |
|
tecnologia tecnologia oracle |
https://community.oracle.com/tech/search?query= Genera un collegamento per cercare nei forum della tecnologia Oracle |
|
mosc oracle-mosc |
https://community.oracle.com/mosc/search?query= Generare un collegamento per cercare nei forum di My Oracle Support |
|
https://www.google.com/search?q= Genera un collegamento per la ricerca utilizzando Google |
|
|
bing | https://www.bing.com/search?q= Generare un collegamento per la ricerca utilizzando Bing |
|
dg anatra |
https://duckduckgo.com/?q= Generare un collegamento per la ricerca utilizzando DuckDuckGo |
|
così stackoverflow |
https://stackoverflow.com/search?q= Generare un collegamento per la ricerca in StackOverflow |
|
cv |
https://www.cve.org/CVERecord?id= Genera un collegamento per l'ID CVE specificato |
|