eval
Utilice el comando eval
para calcular el valor de una expresión y mostrar el valor en un nuevo campo.
-
Mientras el comando
stats
calcula estadísticas basadas en campos existentes, el comandoeval
crea nuevos campos mediante el uso de campos existentes y expresiones arbitrarias. -
Las funciones de procesamiento de cadenas como
indexof
ysubstr
utilizan muchos recursos. Debido a esto, no se recomienda ejecutar el comandoeval
con estas funciones en un gran número de registros de log o grandes valores de campo. En su lugar, extraiga estos valores mediante las definiciones de campos ampliados (EFD) o las etiquetas del origen de log. Consulte Uso de Campos Ampliados en los Orígenes y Uso de Etiquetas en los Orígenes. -
Asegúrese de que el nombre de campo utilizado en el comando
eval
no contenga los caracteres[
y]
.
Sintaxis
Operadores y funciones disponibles con el comando
*|eval <new_field_name>=<expression>
En la siguiente tabla se muestran los operadores disponibles con el comando eval
.
Categoría | Ejemplo |
---|---|
Operadores aritméticos |
+ , - , * , / , % |
Operadores de comparación |
= , != , < , > , <= , >= |
Operadores lógicos |
and , or , not |
Operadores condicionales |
if(<expression>,<expression>,<expression>) |
Varios operadores de comparación |
in , not in |
En la tabla siguiente se muestran las funciones disponibles con el comando eval
.
Categoría | Ejemplo |
---|---|
Funciones de cadena |
|
Funciones numéricas |
|
Funciones de fecha |
Al igual que el comando
Consulte Cadenas de Tiempo Fáciles de Usar en Comparaciones. |
Funciones condicionales |
|
Funciones hash |
Nota: las funciones |
-
Para la función
concat()
, puede introducir tipos de dato numéricos, como entero, flotante o largo. Los campos numéricos se convertirán automáticamente en los valores de cadena correspondientes. -
Puede utilizar
||
para concatenar n entradas. Aquí también puede introducir tipos de datos numéricos, que se convertirán automáticamente en los valores de cadena correspondientes.
Parámetros
En la siguiente tabla se muestran los parámetros utilizados en este comando, junto con sus descripciones.
Parámetro | Descripción |
---|---|
|
Especifique el nombre del campo donde se va a mostrar el valor calculado de la expresión. |
|
Especifique la expresión para la que se debe calcular el valor. |
Para ver ejemplos del uso de este comando en escenarios habituales, consulte:
- Cambio del nombre de los campos mediante la edición de la consulta
- Marca de la unidad de un campo en tiempo de consulta
- Gráfico de histograma
- Visualización de datos de series de tiempo mediante la función de tendencia Link
- Generación de gráficos con campos virtuales
- Enlace con Sentencia SQL como campo de análisis
- Análisis del tiempo transcurrido entre pasos de una transacción
- Uso de funciones de navegación de enlaces para identificar eventos en una base de datos
- Adición de URL a tabla de enlaces
- Usar corte corto de URL con nombre personalizado
- Uso de los símbolos de moneda en el análisis de log
A continuación se muestran algunos ejemplos 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)
En el siguiente ejemplo se comparan las direcciones IP del campo srvrhostip
con un rango de subredes.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')
En el siguiente ejemplo se devuelve la cadena "Target".
*|eval newField = literal(Target)
En el siguiente ejemplo se eliminan los espacios y los separadores de ambos extremos.
*|eval newField = trim(Label)
En el siguiente ejemplo se elimina el carácter coincidente de ambos extremos.
*|eval newField = trim('User Name',h)
En el siguiente ejemplo se elimina el carácter coincidente del extremo izquierdo.
*|eval newField = ltrim('Error ID',0)
En el siguiente ejemplo se elimina el carácter coincidente del extremo derecho.
*|eval newField = rtrim('OS Process ID',2)
En el siguiente ejemplo se define el campo date
en Start Date
y se define el formato de la fecha como MM/dd/yyyy HH:mm
.
*|eval date = toDate('Start Date', 'MM/dd/yyyy HH:mm')
La función toDate
también se puede utilizar para manejar la época de la siguiente manera:
... | where 'Start Time' > toDate(1405544998000)
En el siguiente ejemplo se define el valor del campo duration
en 1.30
.
*|eval duration = toduration("1.30")
En el siguiente ejemplo se define el valor del campo duration
en un valor numérico, que es la diferencia entre End Time
y Start Time
.
*|eval duration = formatDuration('End Time' - 'Start Time')
Los ejemplos que se citan a continuación ilustran la utilización de funciones de fecha.
*| 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()
Puede utilizar las funciones hash md5, sha1, sha256 y sha512 con el comando eval para filtrar datos del log. En el siguiente ejemplo se define el valor del campo user
con el valor sha1("jane")
.
*|eval user = sha1("jane")
En el siguiente ejemplo, se convierte un hexadecimal en un decimal y n se evalúa en 255:
* | eval n = toNumber('0xFF')
En el siguiente ejemplo, se convierte un número octal en decimal y n se evalúa en 10:
* | eval n = toNumber('012')
Ejemplos para la función unit
Algunos ejemplos sencillos:
* | 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')
Ejemplos de unidades comunes como bytes, moneda y duración:
* | 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'
Ejecute las tres consultas anteriores en la visualización de mosaico con la opción Número de formato marcada para obtener los mejores resultados.
Se utilizaría un campo con un tamaño o tipo de duración unit para dar formato a los valores en el gráfico de análisis de enlaces, los histogramas de addfields, la tabla de enlaces y la visualización de mosaicos:
'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'
Marque un campo como que contiene dólares estadounidenses, miles de dólares estadounidenses, millones de dólares estadounidenses o miles de millones de dólares estadounidenses, respectivamente:
| 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)
Tipos soportados para la función unit
Nombres de unidad:
PERCENT | PCT
- Tamaño de los datos:
BYTE
KILOBYTE | KB
MEGABYTE | MB
GIGABYTE | GB
TERABYTE | TB
PETABYTE | PB
EXABYTE | EB
- Tiempo:
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
- Potencia:
WATT
KILOWATT | kW
MEGAWATT | MW
GIGAWATT | GW
TERAWATT | TW
PETAWATT | PW
EXAWATT | EW
- Temperatura:
KELVIN | K
CELSIUS | C
FAHRENHEIT | F
- Frecuencia:
HERTZ | Hz
KILOHERTZ | kHz
MEGAHERTZ | MHz
GIGAHERTZ | GHz
TERAHERTZ | THz
PETAHERTZ | PHz
EXAHERTZ | EHz
Tipos de moneda soportados en la función unit
Puede utilizar esta función para el comando eval
solo en el comando link
. Consulte los enlaces de ejemplo del comando eval
para utilizar la función en escenarios típicos.
Especifique la unidad de moneda con el siguiente 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)
Los sufijos _k
, _m
y _b
se utilizan para indicar la moneda en miles, millones o miles de millones, respectivamente. Para obtener una lista completa de códigos de moneda, consulte Estándares ISO.
NLS_Territory |
Divisa |
---|---|
AFGANISTÁN | AFN |
ALBANIA | ALL |
ARGELIA | DZD |
EE.UU. | Dólares estadounidenses |
ANGOLA | AOA |
ANTIGUA Y BARBUDA | XCD |
ARGENTINA | ARS |
ARMENIA | AMD |
ARUBA | AWG |
AUSTRALIA | AUD |
AUSTRIA | EUR |
AZERBAIYÁN | AZN |
BAHAMAS | BSD |
BAHREIN | BHD |
BANGLADESH | BDT |
BARBADOS | BBD |
BELARÚS | BYN |
BÉLGICA | EUR |
BELICE | BZD |
BERMUDAS | BMD |
BOLIVIA | BOB |
BOSNIA- HERZEGOVINA | BAM |
BOTSWANA | BWP |
BRASIL | BRL |
BULGARIA | BGN |
CAMBOYA | KHR |
CAMERÚN | XAF |
CANADÁ | CAD |
ISLAS CAIMÁN | KYD |
CHILE | CLP |
CHINA | CNY |
COLOMBIA | COP |
CONGO BRAZZAVILLE | XAF |
CONGO KINSASA | CDF |
COSTA RICA | CRC |
CROACIA | HRK |
CURAÇAO | ANG |
CHIPRE | EUR |
REPÚBLICA CHECA | CZK |
DINAMARCA | DKK |
DJIBUTI | DJF |
DOMINICA | XCD |
REPÚBLICA DOMINICANA | DOP |
ECUADOR | Dólares estadounidenses |
EGIPTO | EGP |
EL SALVADOR | SVC |
ESTONIA | EUR |
ETIOPÍA | ETB |
FINLANDIA | EUR |
FRANCIA | EUR |
MACEDONIA OCCIDENTAL | MKD |
GABÓN | XAF |
GEORGIA | GEL |
ALEMANIA | EUR |
GHANA | GHS |
GRECIA | EUR |
GRANADA | XCD |
GUATEMALA | GTQ |
GUYANA | GYD |
HAITÍ | HTG |
HONDURAS | HNL |
HONG KONG | HKD |
HUNGRÍA | HUF |
ISLANDIA | ISK |
INDIA | INR |
INDONESIA | IDR |
IRÁN | IRR |
IRAK | IQD |
IRLANDA | EUR |
ISRAEL | ILS |
ITALIA | EUR |
COSTA DE MARFIL | XOF |
JAMAICA | JMD |
JAPÓN | JPY |
JORDANIA | JOD |
KAZAJISTÁN | KZT |
KENYA | KES |
COREA | KRW |
KUWAIT | KWD |
KIRGUIZISTÁN | KGS |
LAOS | Etiqueta |
LETONIA | EUR |
LÍBANO | LBP |
LIBIA | Año anterior |
LIECHTENSTEIN | CHF |
LITUANIA | EUR |
LUXEMBURGO | EUR |
MACAO | MOP |
MALAWI | MWK |
MALASIA | MYR |
MALDIVAS | MVR |
MALTA | EUR |
MAURITANIA | MRU |
MAURICIO | MUR |
MÉXICO | MXN |
MOLDOVA | MDL |
MONTENEGRO | EUR |
MARRUECOS | MAD |
MOZAMBIQUE | MZN |
MYANMAR | MMK |
NAMIBIA | NAD |
NEPAL | NPR |
NUEVA ZELANDA | NZD |
NICARAGUA | NIO |
NIGERIA | NGN |
NORUEGA | NOK |
OMÁN | OMR |
PAKISTÁN | PKR |
PANAMÁ | PAB |
PARAGUAY | PYG |
Perú | PEN |
FILIPINAS | PHP |
POLONIA | PLN |
PORTUGAL | EUR |
PUERTO RICO | Dólares estadounidenses |
QATAR | QAR |
RUMANÍA | RON |
RUSIA | RUB |
SAINT KITTS Y NEVIS | XCD |
SANTA LUCIA | XCD |
ARABIA SAUDÍ | SAR |
SENEGAL | XOF |
SERBIA | RSD |
SIERRA LEONA | SLL |
SINGAPUR | SGD |
ESLOVAQUIA | EUR |
ESLOVENIA | EUR |
SOMALIA | SOS |
SUDÁFRICA | ZAR |
SUDÁN DEL SUR | SSP |
ESPAÑA | EUR |
SRI LANKA | LKR |
SUDÁN | Objeto de datos de servicio |
SURINAM | SRD |
SUAZILANDIA | SZL |
SUECIA | SEK |
SUIZA | CHF |
SIRIA | SYP |
TAIWÁN | TWD |
TANZANIA | Zona |
TAILANDIA | THB |
HOLANDA | EUR |
TRINIDAD Y TOBAGO | Acumulado trimestral |
TÚNEZ | TND |
TURQUÍA | PRUEBA |
TURKMENISTÁN | TMT |
UGANDA | UGX |
UCRANIA | UAH |
EMIRATOS ÁRABES UNIDOS | AED |
REINO UNIDO | GBP |
URUGUAY | UYU |
UZBEKISTÁN | UZS |
VENEZUELA | VES |
VIETNAM | VND |
YEMEN | SÍ |
ZAMBIA | ZMW |
ZIMBABWE | ZWL |
Detalles de función indexof
Sintaxis de la función index0f
:
indexof (String, String [,int])
indexof (String, String [,start_pos]): el recuento de índices comienza con 0, devuelve el índice de coincidencia a partir de start_pos (si se proporciona) y devuelve -1 si no coincide.
En el siguiente ejemplo se define el valor del campo newField
con la posición de .com
en la cadena uri
.
*|eval newField = indexOf(uri, '.com')
Caso de uso: extraiga la parte relevante de la ruta de API del campo Ruta de acceso de logs de auditoría de OCI
El campo Ruta contiene un valor como /apis/coordination.k8s.io/v1/namespaces/default/leases/oracle.com-oci
.
Puede extraer el valor coordination.k8s
del campo anterior siguiendo estos pasos:
- Busque la posición del primer y segundo
/
mediante la funciónindexOf()
. - Busque la posición del tercer
/
. - Extraiga los valores después del segundo
/
, hasta el tercer/
, mediante la funciónsubstr()
.
'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
Salida de ejemplo:

Detalles de función lastindexof
Sintaxis de la función lastindexof
:
lastindexof(String, String, int)
lastindexof (String, String [, end_pos]): el recuento de índices comienza con 0, devuelve el índice de la última incidencia de la subcadena antes de end_pos (si se proporciona) y devuelve -1 si no hay ninguna coincidencia. El argumento end_pos es opcional.
Algunos ejemplos para utilizar la función lastindexof
:
*|eval n = lastindexof(uri, '.com')
Caso de uso: extraiga el área del campo Tipo en los logs de auditoría de OCI
El campo Tipo contiene un valor como com.oraclecloud.computeApi.GetInstance
.
Para extraer computeAPI
del valor anterior, puede utilizar el siguiente esquema:
- Identifique la posición de los últimos
.
mediantelastIndexOf()
. - Desde este desplazamiento, identifique la posición del
.
anterior, utilizando otrolastIndexOf()
, pero proporcionando el desplazamiento desde el que realizar la búsqueda retrospectiva. - Extraiga el valor entre estas dos posiciones mediante
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
Salida de ejemplo:

Detalles de función replace
Sintaxis de la función replace
:
replace(String, String, String, String, String, ..)
replace
soporta varias sustituciones en una sola función. Algunos ejemplos para utilizar la función replace
:
-
*|eval newField = replace('aabbcc', 'bb', 'xx')
-
*|eval newField = replace('aabbcc', 'bb', 'xx', 'cc', 'yy')
-
Ejemplo de varias acciones de sustitución en una única función
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')
Detalles de función substr
Sintaxis de la función substr
:
substr(String, int [, int])
substr(String, start_pos, end_pos - 1): el recuento de índices comienza con start_pos y termina con end_pos - 1.
En el siguiente ejemplo, newField
es la subcadena de aabbcc
, donde el índice de inicio (inclusive) es 2
y el índice de finalización (exclusive) es 4
. Tenga en cuenta que para las cadenas, el recuento de índices comienza con 0
. Por lo tanto, la subcadena resultante es bb
.
*|eval newField = substr('aabbcc', 2, 4)
Para los casos de uso en los que se utiliza la función substr
, consulte indexof Function Details y lastindexof Function Details.
Detalles de la función url
Sintaxis de la función url
:
url(String, Name, Parameter)
Los valores de Nombre y Parámetro son opcionales.
- Cadena: puede ser una URL o una de las abreviaturas predefinidas. Por ejemplo:
eval Link = url('https://www.oracle.com')
- Nombre: nombre opcional de la URL. Por ejemplo:
eval Link = url('https://www.oracle.com', 'Oracle Home Page')
- Parámetro: parámetro opcional si se utiliza un acceso directo para Cadena. Por ejemplo:
eval Link = url('tech', 'Search Oracle', 'ORA-600')
Algunos ejemplos para utilizar la función 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
Ejemplos para utilizar la función url
después del 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)
Cortos de url
definidos por Oracle
Los siguientes accesos directos definidos por Oracle están disponibles para su uso con la función url
para el comando eval
.
Reducción | URL y descripción | Ejemplo |
---|---|---|
ora buscar:oracle |
https://www.google.com/search?q=site:oracle.com%20 Genere un enlace para buscar todas las cadenas especificadas en |
|
tecnología oracle-tech |
https://community.oracle.com/tech/search?query= Generar un enlace para buscar foros de tecnología de Oracle |
|
mes oracle-mosc |
https://community.oracle.com/mosc/search?query= Generar un enlace para buscar en foros de My Oracle Support |
|
https://www.google.com/search?q= Generar un enlace para buscar usando Google |
|
|
bing | https://www.bing.com/search?q= Generar un enlace para buscar usando Bing |
|
ddg duckduckgo |
https://duckduckgo.com/?q= Genere un enlace para buscar mediante DuckDuckGo |
|
so desbordamiento de pila |
https://stackoverflow.com/search?q= Generar un enlace para buscar en StackOverflow |
|
cueva |
https://www.cve.org/CVERecord?id= Generar un enlace para el ID de CVE especificado |
|