eval
Utilisez la commande eval
pour calculer la valeur d'une expression et afficher cette valeur dans un nouveau champ.
-
While the
stats
command calculates statistics based on existing fields, theeval
command creates new fields by using existing fields and arbitrary expressions. -
Les fonctions de traitement de chaînes telles que
indexof
etsubstr
consomment beaucoup de ressources. Pour cette raison, il n'est pas recommandé d'exécuter la commandeeval
avec ces fonctions sur un grand nombre d'enregistrements de journal ou des valeurs de champ volumineuses. A la place, extrayez ces valeurs à l'aide des définitions de champ étendu (EFD) ou des libellés de votre source de journal. Reportez-vous à Utilisation de champs étendus dans les sources et à Utilisation de étiquettes dans les sources. -
Assurez-vous que le nom de champ utilisé dans la commande
eval
ne contient pas les caractères[
et]
.
Syntaxe
*|eval <new_field_name>=<expression>
Opérateurs et fonctions disponibles avec la commande:
Le tableau suivant répertorie les opérateurs disponibles avec la commande eval
.
Catégorie | Exemple |
---|---|
Opérateurs arithmétiques |
+ , - , * , / , % |
Opérateurs de comparaison |
= , != , < , > , <= , >= |
Opérateurs logiques |
and , or , not |
Opérateurs conditionnels |
if(<expression>,<expression>,<expression>) |
Opérateurs de comparaison multiples |
in , not in |
Le tableau suivant répertorie les fonctions disponibles avec la commande eval
.
Catégorie | Exemple |
---|---|
Fonctions de chaîne |
|
Fonctions numériques |
|
Fonctions de date |
Comme pour la commande
Reportez-vous à Chaînes de temps conviviales dans les comparaisons. |
Fonctions conditionnelles |
|
Fonctions de hachage |
Remarque : les fonctions |
Fonctions trigonométriques |
|
Paramètres
Le tableau suivant répertorie les paramètres utilisés dans cette commande, ainsi que leur description.
Paramètre | Description |
---|---|
|
Indiquez le nom du champ dans lequel la valeur calculée de l'expression doit être affichée. |
|
Indiquez l'expression pour laquelle la valeur doit être calculée. |
Pour obtenir des exemples d'utilisation de cette commande dans des scénarios standard, reportez-vous aux sections suivantes :
- Attribution de nouveaux noms aux champs en modifiant la requête
- Marquage de l'unité pour un champ au moment de la requête
- Histogramme
- Visualisation des données de série temporelle à l'aide de la fonctionnalité de tendance de lien
- Génération de graphiques avec des champs virtuels
- Lien avec le champ Instruction SQL comme champ d'analyse
- Analyse du temps nécessaire entre les étapes d'une transaction
- Utilisation des fonctions de navigation Lien pour identifier les événements dans une base de données
- Ajout d'URL à la table de liens
- Utiliser le raccourci URL avec un nom personnalisé
- Utiliser les symboles de devise dans votre analyse de journal
Voici quelques exemples de commande 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)
L'exemple suivant compare les adresses IP du champ srvrhostip
avec une plage de sous-réseaux.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')
L'exemple suivant renvoie la chaîne "Target".
*|eval newField = literal(Target)
L'exemple suivant enlève les espaces et les tabulations des deux extrémités.
*|eval newField = trim(Label)
L'exemple suivant enlève le caractère correspondant des deux extrémités.
*|eval newField = trim('User Name',h)
L'exemple suivant enlève le caractère correspondant de l'extrémité gauche.
*|eval newField = ltrim('Error ID',0)
L'exemple suivant enlève le caractère correspondant de l'extrémité droite.
*|eval newField = rtrim('OS Process ID',2)
L'exemple suivant définit le champ date
sur Start Date
et définit le format de la date sur MM/dd/yyyy HH:mm
.
*|eval date = toDate('Start Date', 'MM/dd/yyyy HH:mm')
La fonction toDate
peut également être utilisée pour gérer epoch comme suit :
... | where 'Start Time' > toDate(1405544998000)
L'exemple suivant définit la valeur du champ duration
sur 1.30
.
*|eval duration = toduration("1.30")
L'exemple suivant définit la valeur du champ duration
sur une valeur numérique qui correspond à la différence entre End Time
et Start Time
.
*|eval duration = formatDuration('End Time' - 'Start Time')
Les exemples suivants illustrent l'utilisation des fonctions de date.
*| 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()
Vous pouvez utiliser les fonctions de hachage MD5, SHA1, SHA256 et SHA512 avec la commande eval pour filtrer les données de journal. L'exemple suivant définit la valeur du champ user
avec la valeur sha1("jane")
.
*|eval user = sha1("jane")
L'exemple suivant convertit un hexadécimal en décimal et n est évalué à 255 :
* | eval n = toNumber('0xFF')
L'exemple suivant convertit un nombre octal en nombre décimal et l'évaluation de n en 10 :
* | eval n = toNumber('012')
La commande suivante calcule la distance (en miles) entre deux paires de coordonnées lat-long spécifiées en degrés, lorsque les valeurs d'entrée sont des nombres :
* | eval n = distance(lat1, long1, lat2, long2)
La commande suivante calcule la distance (en miles) entre deux paires de coordonnées lat-longues (en degrés), lorsque les valeurs d'entrée sont deux chaînes :
* | eval n = distance('lat1,long1', 'lat2,long2')
Exemples pour la fonction unit
Quelques exemples 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')
Exemples d'unités courantes telles que les octets, la devise et la durée :
* | 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'
Exécutez les trois requêtes ci-dessus sur la visualisation de mosaïque avec l'option Numéro de format sélectionnée pour obtenir les meilleurs résultats.
Un champ avec une unité de taille et de durée est utilisé pour formater les valeurs dans le graphique d'analyse des liens, les histogrammes addfields, la table des liens et la visualisation de mosaïque :
'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'
Marquer un champ comme contenant des dollars américains, des milliers de dollars américains, des millions de dollars américains ou des milliards de dollars américains, respectivement :
| 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)
Types pris en charge pour la fonctionunit
Noms d'unité :
PERCENT | PCT
- Taille des données:
BYTE
KILOBYTE | KB
MEGABYTE | MB
GIGABYTE | GB
TERABYTE | TB
PETABYTE | PB
EXABYTE | EB
- Heure :
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
- Puissance :
WATT
KILOWATT | kW
MEGAWATT | MW
GIGAWATT | GW
TERAWATT | TW
PETAWATT | PW
EXAWATT | EW
- Température :
KELVIN | K
CELSIUS | C
FAHRENHEIT | F
- Fréquence :
HERTZ | Hz
KILOHERTZ | kHz
MEGAHERTZ | MHz
GIGAHERTZ | GHz
TERAHERTZ | THz
PETAHERTZ | PHz
EXAHERTZ | EHz
Types de devise pris en charge dans la fonction unit
Vous pouvez utiliser cette fonction pour la commande eval
uniquement sous la commande link
. Reportez-vous à des exemples de liens de commande eval
pour utiliser la fonction dans des scénarios standard.
Indiquez l'unité monétaire au format suivant :
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)
Les suffixes _k
, _m
et _b
sont utilisés pour indiquer la devise en milliers, millions ou milliards, respectivement. Pour obtenir la liste complète des codes devise, reportez-vous à la section Normes ISO.
NLS_Territory |
Symbole monétaire |
---|---|
AFGHANISTAN | AFN |
ALBANIE | TOUT |
ALGERIE | DZD |
AMERIQUE | EUR |
ANGOLA | AOA |
ANTIGUA-ET-BARBUDA | XCD |
ARGENTINE | ARS |
ARMÉNIE | AMD |
ARUBA | JFA |
AUSTRALIE | AUD |
AUTRICHE | EUR |
AZERBAÏDJAN | AZN |
BAHAMAS | BSD |
BARHEIN | BHD |
BANGLADESH | BDT |
BARBADE | BBD |
BIÉLORUSSIE | BYN |
BELGIQUE | EUR |
BELIZE | BZD |
BERMUDES | BMD |
BOLIVIE | BOB |
BOSNIE-HERZÉGOVINE | BAM |
BOTSWANA | PRB |
BRESIL | BRL |
BULGARIE | BGN |
CAMBODGE | KHR |
CAMEROUN | XAF |
CANADA | CAD |
ILES CAÏMANS | KYD |
CHILI | CLP |
CHINE | CNY |
COLOMBIE | COP |
CONGO - BRAZZAVILLE | XAF |
CONGO - KINSHASA | CDF |
COSTA RICA | CRC |
CROATIE | HRK |
CURAÇAO | ANG |
CHYPRE | EUR |
CZECH REPUBLIC | CZK |
DANEMARK | DKK |
DJIBOUTI | DJF |
DOMINIQUE | XCD |
RÉPUBLIQUE DOMINICAINE | Degré de parallélisme |
EQUATEUR | EUR |
EGYPTE | EGP |
SALVADOR | SVC |
ESTONIE | EUR |
ÉTHIOPIE | ETB |
FINLANDE | EUR |
FRANCE | EUR |
FYR MACEDONIA | MKD |
GABON | XAF |
GÉORGIE | GEL |
ALLEMAGNE | EUR |
GHANA | SGH |
GRÈCE | EUR |
GRENADE | XCD |
GUATEMALA | QTG |
GUYANA | GYD |
HAITI | HTG |
HONDURAS | HNL |
HONG KONG | HKD |
HONGRIE | HUF |
ISLANDE | ISK |
INDE | INR |
INDONESIE | Reconnaissance intelligente de documents |
IRAN | TRI |
IRAQ | IQD |
IRLANDE | EUR |
ISRAËL | ILS |
ITALIE | EUR |
CÔTE D'IVOIRE | XOF |
JAMAÏQUE | JMD |
JAPON | JPY |
JORDANIE | JOD |
KAZAKHSTAN | KZT |
KENYA | KES |
COREE | KRW |
KOWEIT | KWD |
KYRGYZSTAN | KGS |
LAOS | LAK |
LETTONIE | EUR |
LIBAN | LBP |
LIBYE | Année précédente |
LIECHTENSTEIN | CHF |
LITUANIE | EUR |
LUXEMBOURG | EUR |
MACAO | Stock de début de période |
MALAWI | MWK |
MALAISIE | ANM |
MALDIVES | MVR |
MALTE | EUR |
MAURITANIE | MRU |
MAURICE | MUR |
MEXIQUE | MXN |
MOLDAVIE | MDL |
MONTÉNÉGRO | EUR |
MAROC | MAD |
MOZAMBIQUE | MZN |
BIRMANIE | MMK |
NAMIBIE | NAD |
NEPAL | NPR |
NOUVELLE-ZELANDE | NZD |
NICARAGUA | NIO |
NIGÉRIA | NGN |
NORVEGE | OK |
OMAN | Remplacement de mouvement de commande (OMR) |
PAKISTAN | PKR |
PANAMA | PAB |
PARAGUAY | PYG |
PERU | PEN |
PHILIPPINES | PHP |
POLOGNE | PLN |
PORTUGAL | EUR |
PORTO RICO | EUR |
QATAR | QAR |
ROUMANIE | RON |
RUSSIE | RUB |
SAINT-KITTS-ET-NEVIS | XCD |
SAINTE-LUCIE | XCD |
ARABIE SAOUDITE | Analyse d'impact |
SÉNÉGAL | XOF |
SERBIA | RSD |
SIERRA LÉONE | SLL |
SINGAPOUR | SGD |
SLOVAQUIE | EUR |
SLOVENIE | EUR |
SOMALIE | SOS |
AFRIQUE DU SUD | ZAR |
SOUDAN DU SUD | Prix de vente autonome |
ESPAGNE | EUR |
SRI LANKA | LKR |
SOUDAN | Objet SDG |
SURINAME | SRD |
SWAZILAND | SZL |
SUEDE | Clé primaire |
SUISSE | CHF |
SYRIE | SYP |
TAÏWAN | TWD |
TANZANIE | TZS |
THAILANDE | THB |
PAYS-BAS | EUR |
TRINITÉ-ET-TOBAGO | Cumul à ce jour |
TUNISIE | TND |
TURQUIE | ESSAYER |
TURKMENISTAN | TMT |
UGANDA | UGX |
UKRAINE | UAH |
EMIRATS ARABES UNIS | AED |
ROYAUME-UNI | GBP |
URUGUAY | UYU |
OUZBEKISTAN | UZS |
VENEZUELA | VES |
VIETNAM | VND |
YEMEN | Oui |
ZAMBIE | ZMW |
ZIMBABWE | ZWL |
indexof
Détails de la fonction
Syntaxe de la fonction index0f
:
indexof (String, String [,int])
indexof (String, String [,start_pos]) : le nombre d'index commence par 0, renvoie l'index de correspondance à partir du fichier start_pos (le cas échéant) et renvoie -1 en l'absence de correspondance.
L'exemple suivant définit la valeur du champ newField
avec la position de .com
dans la chaîne uri
.
*|eval newField = indexOf(uri, '.com')
Cas d'utilisation : extraction de la partie pertinente du chemin d'API à partir des journaux d'audit OCI, champ Chemin
Le champ Chemin contient une valeur telle que /apis/coordination.k8s.io/v1/namespaces/default/leases/oracle.com-oci
.
Vous pouvez extraire la valeur coordination.k8s
du champ ci-dessus en procédant comme suit :
- Recherchez la position des premier et deuxième éléments
/
à l'aide de la fonctionindexOf()
. - Recherchez la position du troisième
/
. - Extrayez les valeurs après le deuxième élément
/
, jusqu'au troisième élément/
, à l'aide de la fonctionsubstr()
.
'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
Exemple de sortie :

lastindexof
Détails de la fonction
Syntaxe de la fonction lastindexof
:
lastindexof(String, String, int)
lastindexof (String, String [, end_pos]) : le nombre d'index commence par 0, renvoie l'index de la dernière occurrence de la sous-chaîne avant end_pos (le cas échéant) et renvoie -1 en l'absence de correspondance. L'argument end_pos est facultatif.
Exemples d'utilisation de la fonction lastindexof
:
*|eval n = lastindexof(uri, '.com')
Cas d'emploi : extraction de la zone à partir du champ Type dans les journaux d'audit OCI
Le champ Type contient une valeur telle que com.oraclecloud.computeApi.GetInstance
.
Pour extraire computeAPI
de la valeur ci-dessus, vous pouvez utiliser le schéma suivant :
- Identifiez la position du dernier élément
.
à l'aide delastIndexOf()
. - A partir de ce décalage, identifiez la position de l'élément
.
précédent, à l'aide d'un autre élémentlastIndexOf()
, mais en fournissant le décalage à partir duquel effectuer la recherche. - Extrayez la valeur entre ces deux positions à l'aide de
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
Exemple de sortie :

replace
Détails de la fonction
Syntaxe de la fonction replace
:
replace(String, String, String, String, String, ..)
replace
prend en charge plusieurs remplacements dans une seule fonction. Exemples d'utilisation de la fonction replace
:
-
*|eval newField = replace('aabbcc', 'bb', 'xx')
-
*|eval newField = replace('aabbcc', 'bb', 'xx', 'cc', 'yy')
-
Exemple d'actions de remplacement multiples dans une fonction
replace
unique :* | 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
Détails de la fonction
Syntaxe de la fonction substr
:
substr(String, int [, int])
substr(String, start_pos, end_pos - 1) : le nombre d'index commence par start_pos et se termine par end_pos - 1.
Dans l'exemple suivant, newField
est la sous-chaîne de aabbcc
, où l'index de début (inclus) est 2
et l'index de fin (exclu) est 4
. Pour les chaînes, le nombre d'index commence par 0
. La sous-chaîne résultante est donc bb
.
*|eval newField = substr('aabbcc', 2, 4)
Pour les cas d'utilisation où la fonction substr
est utilisée, reportez-vous aux sections indexof Function Details et lastindexof Function Details.
Détails de la fonction url
Syntaxe de la fonction url
:
url(String, Name, Parameter)
Les valeurs Name et Parameter sont facultatives.
- String : il peut s'agir d'une URL ou de l'un des noms abrégés prédéfinis. Par exemple :
eval Link = url('https://www.oracle.com')
- Name : nom facultatif de l'URL. Par exemple :
eval Link = url('https://www.oracle.com', 'Oracle Home Page')
- Parameter : paramètre facultatif si un raccourci est utilisé pour String. Par exemple :
eval Link = url('tech', 'Search Oracle', 'ORA-600')
Exemples d'utilisation de la fonction 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
Exemples d'utilisation de la fonction url
après la commande 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)
Coupes courtes url
définies par Oracle
Les raccourcis définis par Oracle suivants sont disponibles avec la fonction url
pour la commande eval
.
Raccourci | URL et description | Exemple |
---|---|---|
ora recherche:oracle |
https://www.google.com/search?q=site:oracle.com%20 Générez un lien pour rechercher toutes les chaînes indiquées dans |
|
technologie oracle-tech |
https://community.oracle.com/tech/search?query= Générer un lien pour rechercher des forums technologiques Oracle |
|
mosc oracle-mosc |
https://community.oracle.com/mosc/search?query= Générer un lien pour rechercher des forums My Oracle Support |
|
https://www.google.com/search?q= Générer un lien pour effectuer une recherche à l'aide de Google |
|
|
bing | https://www.bing.com/search?q= Générer un lien pour rechercher à l'aide de Bing |
|
Ddg canard-canard |
https://duckduckgo.com/?q= Générer un lien à rechercher à l'aide de DuckDuckGo |
|
so débordement |
https://stackoverflow.com/search?q= Générez un lien pour rechercher sur StackOverflow |
|
cve |
https://www.cve.org/CVERecord?id= Générer un lien pour l'ID CVE donné |
|