eval
Utilizzare il comando eval per calcolare il valore di un'espressione e visualizzare il valore in un nuovo campo.
-
Mentre il comando
statscalcola le statistiche in base ai campi esistenti, il comandoevalcrea nuovi campi utilizzando campi esistenti ed espressioni arbitrarie. -
Le funzioni di elaborazione delle stringhe, ad esempio
indexofesubstr, utilizzano molte risorse. Per questo motivo, l'esecuzione del comandoevalcon queste funzioni rispetto a un numero elevato di record di log o a valori di campo elevati non è consigliabile. Estrarre questi valori utilizzando le definizioni di campo estese (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
evalnon contenga i caratteri[e].
Sintassi
*|eval <new_field_name>=<expression>Operatori e funzioni disponibili con il comando:
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>) |
|
Operatori di confronto multipli |
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 |
Per esempi sull'uso delle funzioni |
|
Funzioni hash |
Nota: le funzioni |
|
Funzioni trigonometriche |
|
Parametri
Nella tabella seguente sono elencati i parametri utilizzati in questo comando, insieme alle 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 di utilizzo di questo comando in scenari tipici, vedere:
- Rinominare i campi modificando la query
- Contrassegna l'unità per un campo in fase di query
- Grafico istogramma
- Visualizzazione dei dati delle serie temporali mediante la funzione Tendenza collegamenti
- Genera grafici con campi virtuali
- Collega utilizzando l'istruzione SQL come campo di analisi
- Analizza 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 URL breve 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 n =endsWith(uri, '.com')*|eval n =startsWith(uri, 'http://oracle')*|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)*|eval value = arccos(angle)*|eval value = arcsin(angle)*|eval value = arctan(angle)*|eval value = atan2(x, y)*|eval value = cos(angle)*|eval value = e()*|eval value = pi()*|eval value = sin(angle)*|eval value = tan(angle)*|eval value =toDegrees(angle)*|eval value =toRadians(angle)Nell'esempio seguente vengono confrontati gli indirizzi IP nel campo srvrhostip con un intervallo di subnet.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')L'esempio seguente restituisce la stringa "Target".
*|eval newField = literal(Target)Nell'esempio seguente vengono rimossi gli spazi e le schede 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)Nell'esempio seguente viene rimosso il carattere corrispondente dall'estremità sinistra.
*|eval newField = ltrim('Error ID',0)Nell'esempio seguente viene rimosso il carattere corrispondente dall'estremità destra.
*|eval newField = rtrim('OS Process ID',2)L'esempio seguente imposta il campo date su Start Date e definisce il formato della data 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)L'esempio seguente imposta il valore del campo duration su 1.30.
*|eval duration = toduration("1.30")L'esempio seguente imposta il valore del campo duration 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 di 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. L'esempio seguente imposta il valore del campo user con il valore sha1("jane").
*|eval user = sha1("jane")L'esempio seguente converte un esadecimale in un 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')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:
* | eval n = distance(lat1, long1, lat2, long2) Il seguente comando calcola la distanza (in miglia) tra due coppie di coordinate lat-long (in gradi), quando i valori di input sono due stringhe:
* | eval n = distance('lat1,long1', 'lat2,long2')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 quali 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 sopra riportate nella visualizzazione Casella con l'opzione Numero formato selezionata per ottenere i risultati migliori.
Un campo con dimensione o durata di tipo unità viene utilizzato per formattare i valori nel grafico Analizza collegamento, negli istogrammi dei 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'
Contrassegna un campo come contenente rispettivamente dollari USA, migliaia di dollari USA, milioni di dollari USA o miliardi di dollari USA:
| 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:
BYTEKILOBYTE | KBMEGABYTE | MBGIGABYTE | GBTERABYTE | TBPETABYTE | PBEXABYTE | EB
- Ora:
MILLISECOND | MSS | SEC | SECS | SECOND | SECONDSM | MIN | MINS | MINUTE | MINUTESH | HR | HRS | HOUR | HOURSD | DAY | DAYSW | WEEK | WEEKSMON | MONTH | MONTHSY | YR | YRS | YEAR | YEARSMICRO | µs
- Potenza:
WATTKILOWATT | kWMEGAWATT | MWGIGAWATT | GWTERAWATT | TWPETAWATT | PWEXAWATT | EW
- Temperatura:
KELVIN | KCELSIUS | CFAHRENHEIT | F
- la frequenza:
HERTZ | HzKILOHERTZ | kHzMEGAHERTZ | MHzGIGAHERTZ | GHzTERAHERTZ | THzPETAHERTZ | PHzEXAHERTZ | EHz
Tipi di valuta supportati nella funzione unit
È possibile utilizzare questa funzione per il comando eval solo con il comando link. Vedere i collegamenti di esempio del comando eval per l'utilizzo della funzione in scenari tipici.
Specificare l'unità divisa 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 rispettivamente in migliaia, milioni o miliardi. Per un elenco completo dei codici valuta, vedere Standard ISO.
NLS_Territory |
Divisa |
|---|---|
| AFGHANISTAN | AFN |
| ALBANIA | ALL |
| ALGERIA | DZD |
| AMERICA | USD |
| ANGOLA | AOA |
| ANTIGUA E BARBUDA | XCD |
| ARGENTINA | ARS |
| ARMENIA | AMD |
| ARUBA | AWG |
| AUSTRALIA | AUD |
| AUSTRIA | EURO |
| AZERBAIGIAN | AZN |
| BAHAMAS | BSD |
| BAHREIN | Diploma di laurea |
| BANGLADESH | BDT |
| BARBADOS | BBD |
| BIELORUSSIA | BYN |
| BELGIO | EURO |
| BELIZE | BZD |
| BERMUDA | BMD |
| BOLIVIA | Business object |
| BOSNIA-ERZEGOVINA | BAM |
| BOTSWANA | BWP |
| BRASILE | BRL |
| BULGARIA | BGN |
| CAMBOGIA | KHR |
| CAMERUN | XAF |
| CANADA | CAD |
| ISOLE CAYMAN | KYD |
| CILE | CLP |
| CINA | CNY |
| COLOMBIA | COP |
| 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 | Centro assistenza |
| ESTONIA | EURO |
| ETIOPIA | ETB |
| FINLANDIA | EURO |
| FRANCIA | EURO |
| FYR MACEDONIA | MKD |
| GABON | XAF |
| GEORGIA | GEL |
| GERMANIA | EURO |
| GHANA | GHS |
| GRECIA | EURO |
| GRENADA | XCD |
| GUATEMALA | GTQ |
| 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 | GIAPPONE |
| GIORDANIA | DIO |
| 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 | Moc |
| MALAWI | MWK |
| MALESIA | MYR |
| MALDIVE | MVR |
| MALTA | EURO |
| MAURITANIA | STR |
| MAURITIUS | MUR |
| MESSICO | MXN |
| MOLDAVIA | MDL |
| MONTENEGRO | EURO |
| MAROCCO | MAD |
| MOZAMBICO | MZN |
| BIRMANIA | MMK |
| NAMIBIA | NAD |
| NEPALE | NPR |
| NUOVA ZELANDA | NZD |
| NICARAGUA | NIO |
| NIGERIA | NGN |
| NORVEGIA | NOK |
| OMAN | SMO |
| PAKISTAN | Chiave primaria |
| PANAMA | PAB |
| PARAGUAY | Anno fiscale |
| PERU | PEN |
| FILIPPINE | PHP |
| POLONIA | PLN |
| PORTOGALLO | EURO |
| PORTORICO | USD |
| QATAR | QAR |
| ROMANIA | RON |
| RUSSIA | RUB |
| SAINT KITTS E NEVIS | XCD |
| SANTA 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 | Prezzo vendita svincolata |
| SPAGNA | EURO |
| SRI LANKA | LKR |
| SUDAN | SDG |
| SURINAME | RSD |
| SWAZILAND | SZL |
| SVEZIA | SEK |
| SVIZZERA | CHF |
| SIRIA | SYP |
| TAIWAN | TWD |
| TANZANIA | ZS |
| TAILANDIA | THB |
| PAESI BASSI | EURO |
| TRINIDAD E TOBAGO | Progressivo periodo |
| TUNISIA | TND |
| TURCHIA | PROVA |
| TURKMENISTAN | TMT |
| UGANDA | Accedi |
| UCRAINA | UAH |
| EMIRATI ARABI UNITI | AED |
| REGNO UNITO | GBP |
| URUGUAY | UYU |
| UZBEKISTAN | UZS |
| VENEZUELA | VES |
| VIETNAM | VND |
| YEMEN | YER |
| ZAMBIA | ZMW |
| ZIMBABWE | ZWL |
Dettagli funzione indexof
La sintassi della funzione index0f:
indexof (String, String [,int])indexof (String, String [,start_pos]): il conteggio degli indici inizia con 0, restituisce l'indice di corrispondenza a partire da start_pos (se fornito) e restituisce -1 se non corrisponde.
L'esempio seguente imposta il valore del campo newField con la posizione di .com nella stringa uri.
*|eval newField = indexOf(uri, '.com')Caso d'uso: estrarre la parte pertinente del percorso API dai log di audit OCI, campo 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, APIOutput di esempio:

Dettagli funzione lastindexof
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 corrisponde. L'argomento end_pos è facoltativo.
Alcuni esempi di utilizzo della funzione lastindexof:
*|eval n = lastindexof(uri, '.com')Caso d'uso: estrazione dell'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 il seguente schema:
- Identificare la posizione dell'ultimo
.utilizzandolastIndexOf(). - Da questo offset, identificare la posizione del precedente
., utilizzando un altrolastIndexOf(), ma fornendo l'offset da dove cercare 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, AreaOutput di esempio:

Dettagli funzione replace
La sintassi della funzione replace:
replace(String, String, String, String, String, ..)replace supporta più sostituzioni in un'unica funzione. Alcuni esempi di 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')
Dettagli funzione substr
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. Si noti che per le stringhe il conteggio degli indici inizia con 0. Quindi la sottostringa risultante è 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.
Dettagli funzione url
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 Stringa. Ad esempio:
eval Link = url('tech', 'Search Oracle', 'ORA-600')
Alcuni esempi di 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 tasti di scelta rapida definiti da Oracle sono disponibili per l'utilizzo con la funzione url per il comando eval.
| Collegamento a breve | URL e descrizione | Esempio |
|---|---|---|
|
ora ricerca:oracle |
https://www.google.com/search?q=site:oracle.com%20Generare 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 link per la ricerca utilizzando Google |
|
|
| bing | https://www.bing.com/search?q=Generare un collegamento per la ricerca mediante Bing |
|
|
ddg anatra |
https://duckduckgo.com/?q=Generare un collegamento per la ricerca utilizzando DuckDuckGo |
|
|
così stackoverflow |
https://stackoverflow.com/search?q=Generare un collegamento da cercare in StackOverflow |
|
|
cve |
https://www.cve.org/CVERecord?id=Genera un collegamento per l'ID CVE specificato |
|