eval
Use o comando eval
para calcular o valor de uma expressão e exibir o valor em um novo campo.
-
Enquanto o comando
stats
calcula estatísticas com base em campos existentes, o comandoeval
cria novos campos usando campos existentes e expressões arbitrárias. -
As funções de processamento de string como
indexof
esubstr
consomem muitos recursos. Devido a isso, não é recomendável executar o comandoeval
com essas funções em relação a um grande número de registros de log ou valores de campo grandes. Em vez disso, extraia esses valores usando as Definições de Campo Estendido (EFD) ou Labels na Origem de Log. Consulte Usar Campos Estendidos em Origens e Usar Labels em Origens. -
Certifique-se de que o nome do campo usado no comando
eval
não contenha os caracteres[
e]
.
Sintaxe
Operadores e Funções Disponíveis com o Comando
*|eval <new_field_name>=<expression>
A tabela a seguir lista os operadores disponíveis com o comando eval
.
Categoria | Exemplo |
---|---|
Operadores Aritméticos |
+ , - , * , / , % |
Operadores de Comparação |
= , != , < , > , <= , >= |
Operadores Lógicos |
and , or , not |
Operadores Condicionais |
if(<expression>,<expression>,<expression>) |
Vários Operadores de Comparação |
in , not in |
A tabela a seguir lista as funções disponíveis com o comando eval
.
Categoria | Exemplo |
---|---|
Funções de String |
|
Funções Numéricas |
|
Funções de Data |
Assim como o comando
Consulte Strings de Tempo Amigáveis ao Usuário em Comparações. |
Funções Condicionais |
|
Funções de Hash |
Observação: As funções |
-
Para a função
concat()
, você pode inserir tipos de dados numéricos como inteiro, flutuante ou longo. Os campos numéricos que serão convertidos automaticamente nos valores de string correspondentes. -
Você pode usar
||
para concatenar n número de entradas. Aqui também, você pode inserir tipos de dados numéricos que serão convertidos automaticamente nos valores de string correspondentes.
Parâmetros
A tabela a seguir lista os parâmetros usados nesse comando, com suas descrições.
Parâmetro | Descrição |
---|---|
|
Especifique o nome do campo em que o valor calculado da expressão deverá ser exibido. |
|
Especifique a expressão cujo valor precisa ser calculado. |
Para obter exemplos de como usar esse comando em cenários típicos, consulte:
- Renomear os Campos Editando a Consulta
- Marcar a Unidade para um Campo no Tempo de Consulta
- Gráfico de Histograma
- Visualizar Dados da Série de Tempo Usando o Recurso de Tendência do Link
- Gerar Gráficos com Campos Virtuais
- Vincular Usando a Instrução SQL como Campo de Análise
- Analisar o Tempo Utilizado Entre as Etapas de uma Transação
- Usar Funções de Navegação de Link para Identificar Eventos em um Banco de Dados
- Adicionar URLs à Tabela de Links
- Usar Corte Curto da URL com Nome Personalizado
- Use os Símbolos de Moeda em sua Análise de Log
Estes são alguns exemplos do 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)
O exemplo a seguir compara os endereços IP no campo srvrhostip
com uma faixa de sub-redes.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')
O exemplo a seguir retorna a string "Target".
*|eval newField = literal(Target)
O exemplo a seguir remove os espaços e as tabulações das duas extremidades.
*|eval newField = trim(Label)
O exemplo a seguir remove o caractere correspondente das duas extremidades.
*|eval newField = trim('User Name',h)
O exemplo a seguir remove o caractere correspondente da extremidade esquerda.
*|eval newField = ltrim('Error ID',0)
O exemplo a seguir remove o caractere correspondente do lado direito.
*|eval newField = rtrim('OS Process ID',2)
O exemplo a seguir define o campo date
como Start Date
e define o formato da data como MM/dd/yyyy HH:mm
.
*|eval date = toDate('Start Date', 'MM/dd/yyyy HH:mm')
A função toDate
também pode ser usada para tratar a época da seguinte forma:
... | where 'Start Time' > toDate(1405544998000)
O exemplo a seguir define o valor do campo duration
como 1.30
.
*|eval duration = toduration("1.30")
O exemplo a seguir define o valor do campo duration
com um valor numérico que é a diferença de End Time
e Start Time
.
*|eval duration = formatDuration('End Time' - 'Start Time')
Os exemplos a seguir ilustram o uso das funções de 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()
Você pode usar as funções de hash md5, sha1, sha256 e sha512 com o comando eval para filtrar dados de log. O exemplo a seguir define o valor do campo user
com o valor sha1("jane")
.
*|eval user = sha1("jane")
O exemplo a seguir converte um hexadecimal e n é avaliado como 255:
* | eval n = toNumber('0xFF')
O exemplo a seguir converte um número octal em decimal e n é avaliado como 10:
* | eval n = toNumber('012')
Exemplos da Função unit
Alguns exemplos simples:
* | 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')
Exemplos de unidades comuns, como bytes, moeda e duração:
* | 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'
Execute as três consultas acima na visualização do Bloco com a opção Número do Formato marcada para obter os melhores resultados.
Um campo com uma unidade de tamanho ou tipo de duração seria usado para formatar os valores no gráfico Análise de Link, em histogramas addfields, na Tabela de Links e na visualização Bloco:
'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 um campo como contendo dólares americanos, milhares de dólares americanos, milhões de dólares americanos ou bilhões de dólares americanos, 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 suportados para a função unit
Nomes de Unidade:
PERCENT | PCT
- Tamanho dos dados:
BYTE
KILOBYTE | KB
MEGABYTE | MB
GIGABYTE | GB
TERABYTE | TB
PETABYTE | PB
EXABYTE | EB
- Tempo:
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
- Potência:
WATT
KILOWATT | kW
MEGAWATT | MW
GIGAWATT | GW
TERAWATT | TW
PETAWATT | PW
EXAWATT | EW
- Temperatura:
KELVIN | K
CELSIUS | C
FAHRENHEIT | F
- Frequência:
HERTZ | Hz
KILOHERTZ | kHz
MEGAHERTZ | MHz
GIGAHERTZ | GHz
TERAHERTZ | THz
PETAHERTZ | PHz
EXAHERTZ | EHz
Tipos de Moeda Suportados na Função unit
Você só pode usar essa função para o comando eval
sob o comando link
. Consulte links de exemplo do comando eval
para usar a função em cenários típicos.
Especifique a unidade monetária usando o seguinte 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)
Os sufixos _k
, _m
e _b
são usados para indicar a moeda em milhares, milhões ou bilhões, respectivamente. Para obter uma lista completa de códigos de moeda, consulte Normas ISO.
NLS_Territory |
Moeda |
---|---|
AFEGANISTÃO | AFN |
ALBÂNIA | ALL |
ARGÉLIA | DZD |
AMÉRICA | US$ |
ANGOLA | AOA |
ANTÍGUA E BARBUDA | XCD |
ARGENTINA | ARS |
ARMÊNIA | AMD |
ARUBA | AWG |
AUSTRÁLIA | AUD |
ÁUSTRIA | Euro (EUR) |
AZERBAIJÃO | AZN |
BAHAMAS | BSD |
BAREIN | BHD |
BANGLADESH | BDT |
BARBADOS | Até logo |
BELARUS | BYN |
BÉLGICA | Euro (EUR) |
BELIZE | BZD |
BERMUDAS | BMD |
BOLÍVIA | BOB |
BÓSNIA E HERZEGOVINA | BAM |
BOTSUANA | BWP |
BRASIL | BRL |
BULGÁRIA | BGN |
CAMBOJA | KHR |
CAMARÕES | XAF |
CANADÁ | CAD |
ILHAS CAYMAN | KYD |
CHILE | CLP |
CHINA | CNY |
COLÔMBIA | COP |
CONGO - BRAZZAVILLE | XAF |
CONGO - KINSHASA | CDF |
COSTA RICA | CRC |
CROÁCIA | HRK |
CURACAO | ANEXO |
CHIPRE | Euro (EUR) |
CZECH REPUBLIC | CZK |
DINAMARCA | DKK |
DJIBUTI | DJF |
DOMINICA | XCD |
REPÚBLICA DOMINICANA | DOP |
EQUADOR | US$ |
EGITO | EGP |
EL SALVADOR | SVC |
ESTÔNIA | Euro (EUR) |
ETIÓPIA | ETB |
FINLÂNDIA | Euro (EUR) |
FRANÇA | Euro (EUR) |
MACEDÔNIA | MKD |
GABÃO | XAF |
GEORGIA | GEL |
ALEMANHA | Euro (EUR) |
GHANA | GHS |
GRÉCIA | Euro (EUR) |
GRANADA | XCD |
GUATEMALA | GTQ |
GUIANA | GYD |
HAITI | HTG |
HONDURAS | HNL |
HONG KONG | HKD |
HUNGRIA | HUF |
ISLÂNDIA | ISK |
ÍNDIA | INR |
INDONÉSIA | IDR |
IRÃO | IRR |
IRAQ | IQD |
IRLANDA | Euro (EUR) |
ISRAEL | ILS |
ITÁLIA | Euro (EUR) |
COSTA DO MARFIM | XOF |
JAMAICA | JMD |
JAPÃO | JPY |
JORDÂNIA | JOD |
CAZAQUISTÃO | KZT |
KENYA | KES |
COREIA | KRW |
KUWAIT | KWD |
KYRGYZSTAN | KGS |
LEI | LAC |
LETÔNIA | Euro (EUR) |
LÍBANO | LBP |
LÍBIA | Ano Anterior |
LIECHTENSTEIN | CHF |
LITUANIA | Euro (EUR) |
LUXEMBURGO | Euro (EUR) |
MACAU | Início do Período |
MALAVI | MWK |
MALÁSIA | MYR |
MALDIVAS | MVR |
MALTA | Euro (EUR) |
MAURITÂNIA | MRU |
MAURÍCIO | MUR |
MÉXICO | MXN |
MOLDÁVIA | MDL |
MONTENEGRO | Euro (EUR) |
MARROCOS | MAD |
MOÇAMBIQUE | MZN |
MIANMAR | MMK |
NAMÍBIA | NAD |
NEPAL | NPR |
NOVA ZELÂNDIA | NZD |
NICARÁGUA | NIO |
NIGÉRIA | NGN |
NORUEGA | NOK |
OMAN | OMR |
PAQUISTÃO | PKR |
PANAMÁ | PAB |
PARAGUAI | PYG |
PERU | PEN |
FILIPINAS | PHP |
POLÔNIA | PLN |
PORTUGAL | Euro (EUR) |
PORTO RICO | US$ |
CATAR | QAR |
ROMÊNIA | RON |
RÚSSIA | RUB |
SAINT KITTS E NEVIS | XCD |
SANTA LUCIA | XCD |
ARÁBIA SAUDITA | SAR |
SENEGAL | XOF |
SERBIA | RSD |
SERRA LEOA | SLL |
SINGAPURA | SGD |
ESLOVÁQUIA | Euro (EUR) |
ESLOVÊNIA | Euro (EUR) |
SOMÁLIA | SOS |
ÁFRICA DO SUL | ZAR |
SUDÃO DO SUL | SSP |
ESPANHA | Euro (EUR) |
SRI LANKA | LKR |
SUDÃO | O nas |
SURINAME | SRD |
SUAZILÂNDIA | SZL |
SUÉCIA | SEK |
SUÍÇA | CHF |
SÍRIA | SIP |
TAIWAN | TWD |
TANZÂNIA | FH |
TAILÂNDIA | THB |
PAÍSES BAIXOS | Euro (EUR) |
TRINIDAD E TOBAGO | Acumulado no Mês |
TUNÍSIA | TND |
TURQUIA | TENTAR |
TURCOMENISTÃO | TMT |
UGANDA | UGX |
UCRÂNIA | UAH |
EMIRADOS ÁRABES UNIDOS | AED |
REINO UNIDO | GBP |
URUGUAI | UYU |
USBEQUISTÃO | UZS |
VENEZUELA | VERS |
VIETNÃ | VND |
IÊMEN | SIM |
ZÂMBIA | ZMW |
ZIMBÁBUE | ZWL |
indexof
Detalhes da Função
A sintaxe da função index0f
:
indexof (String, String [,int])
indexof (String, String [,start_pos]): A contagem do índice começa com 0, retorna o índice de correspondência começando com start_pos (se fornecido) e retorna -1 se não houver correspondência.
O exemplo a seguir define o valor do campo newField
com a posição .com
na string uri
.
*|eval newField = indexOf(uri, '.com')
Caso de Uso: Extraia a parte relevante do caminho da API dos Logs de Auditoria do OCI, campo Caminho
O campo Caminho contém um valor como /apis/coordination.k8s.io/v1/namespaces/default/leases/oracle.com-oci
.
Você pode extrair o valor coordination.k8s
do campo acima seguindo estas etapas:
- Localize a posição do primeiro e do segundo
/
usando a funçãoindexOf()
. - Encontre a posição do terceiro
/
. - Extraia os valores após o segundo
/
, até o terceiro/
, usando a funçãosubstr()
.
'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
Exemplo de saída:

lastindexof
Detalhes da Função
A sintaxe da função lastindexof
:
lastindexof(String, String, int)
lastindexof (String, String [, end_pos]): A contagem do índice começa com 0, retorna o índice da última ocorrência da substring antes de end_pos (se fornecido) e retorna -1 se não houver correspondência. O argumento end_pos é opcional.
Alguns exemplos de uso da função lastindexof
:
*|eval n = lastindexof(uri, '.com')
Caso de Uso: Extraia a Área do campo Tipo nos Logs de Auditoria do OCI
O campo Tipo contém um valor como com.oraclecloud.computeApi.GetInstance
.
Para extrair computeAPI
do valor acima, você pode usar o seguinte esquema:
- Identifique a posição do último
.
usandolastIndexOf()
. - A partir desse deslocamento, identifique a posição do
.
anterior, usando outrolastIndexOf()
, mas fornecendo o deslocamento de onde pesquisar novamente. - Extraia o valor entre essas duas posições usando
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
Exemplo de saída:

replace
Detalhes da Função
A sintaxe da função replace
:
replace(String, String, String, String, String, ..)
replace
suporta várias substituições em uma única função. Alguns exemplos de uso da função replace
:
-
*|eval newField = replace('aabbcc', 'bb', 'xx')
-
*|eval newField = replace('aabbcc', 'bb', 'xx', 'cc', 'yy')
-
Exemplo de várias ações de substituição em uma única função
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
Detalhes da Função
A sintaxe da função substr
:
substr(String, int [, int])
substr(String, start_pos, end_pos - 1): a contagem de índices começa com start_pos e termina com end_pos - 1.
No exemplo a seguir, newField
é a substring de aabbcc
, em que o índice inicial (inclusive) é 2
e o índice final (exclusive) é 4
. Observe que, para strings, a contagem de índices começa com 0
. Portanto, a substring resultante é bb
.
*|eval newField = substr('aabbcc', 2, 4)
Para casos de uso em que a função substr
é usada, consulte Detalhes da Função indexof e Detalhes da Função lastindexof.
url
Detalhes da Função
A sintaxe da função url
:
url(String, Name, Parameter)
Os valores Nome e Parâmetro são opcionais.
- String: Pode ser um URL ou um dos nomes abreviados predefinidos. Por exemplo:
eval Link = url('https://www.oracle.com')
- Nome: Nome Opcional do URL. Por exemplo:
eval Link = url('https://www.oracle.com', 'Oracle Home Page')
- Parâmetro: Parâmetro opcional se um atalho for usado para String. Por exemplo:
eval Link = url('tech', 'Search Oracle', 'ORA-600')
Alguns exemplos de uso da função 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
Exemplos de uso da função url
após o 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-Cuts url
Definidos pela Oracle
Os atalhos definidos pela Oracle a seguir estão disponíveis para uso com a função url
do comando eval
.
Curto-Corte | URL e Descrição | Exemplo |
---|---|---|
ora Pesquisar:oracle |
https://www.google.com/search?q=site:oracle.com%20 Gere um link para pesquisar todas as strings especificadas em |
|
tecnologia oracle-tech |
https://community.oracle.com/tech/search?query= Gerar um link para pesquisar nos fóruns de tecnologia da Oracle |
|
mosca oracle-mosc |
https://community.oracle.com/mosc/search?query= Gerar um link para pesquisar fóruns do My Oracle Support |
|
https://www.google.com/search?q= Gerar um link para pesquisar usando o Google |
|
|
bing | https://www.bing.com/search?q= Gerar um link para pesquisar usando o Bing |
|
ddg patoduckgo |
https://duckduckgo.com/?q= Gerar um link para pesquisa usando DuckDuckGo |
|
so fluxo de pilha |
https://stackoverflow.com/search?q= Gerar um link para pesquisar em StackOverflow |
|
cve |
https://www.cve.org/CVERecord?id= Gerar um link para o ID de CVE fornecido |
|