eval
Utilisez la commande eval
pour calculer la valeur d'une expression et afficher cette valeur dans un nouveau champ.
-
Pendant que la commande
stats
calcule les statistiques en fonction des champs existants, la commandeeval
crée des champs à l'aide de champs existants et d'expression arbitraire. -
Les fonctions de traitement de chaîne telles que
indexof
etsubstr
consomment beaucoup de ressources. Pour cette raison, l'exécution de la commandeeval
avec ces fonctions sur un grand nombre d'enregistrements de journal ou sur des valeurs de champ importantes n'est pas recommandée. Extrayez plutôt 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 libellés dans les sources. -
Assurez-vous que le nom de champ utilisé dans la commande
eval
ne contient pas les caractères[
et]
.
Syntaxe
Opérateurs et fonctions disponibles avec la commande
*|eval <new_field_name>=<expression>
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 |
-
Pour la fonction
concat()
, vous pouvez entrer des types de données numériques (entier, nombre à virgule flottante, long, etc.). Les champs numériques sont remplacés automatiquement par les valeurs de chaîne correspondantes. -
Vous pouvez utiliser
||
pour concaténer un nombre n d'entrées. Ici aussi, vous pouvez entrer des types de données numériques qui sont automatiquement remplacés par les valeurs de chaîne correspondantes.
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 d'URL avec le 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 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'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 l'époque 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 n est évalué à 10 :
* | eval n = toNumber('012')
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 en mosaïque avec l'option Numéro de format cochée pour obtenir les meilleurs résultats.
Un champ avec une unité de taille ou de durée est utilisé pour formater les valeurs dans le graphique d'analyse de lien, ajouter des champs, les histogrammes, la table de 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'
Marquez 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 fonction unit
Noms d'unité :
PERCENT | PCT
- Taille des données:
BYTE
KILOBYTE | KB
MEGABYTE | MB
GIGABYTE | GB
TERABYTE | TB
PETABYTE | PB
EXABYTE | EB
- Durée :
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 | ALL |
ALGERIE | DZD |
AMERIQUE | EUR |
ANGOLA | AOA |
ANTIGUA ET BARBUDA | XCD |
ARGENTINE | RA |
ARMÉNIE | AMD |
ARUBA | JFA |
AUSTRALIE | AUD |
AUTRICHE | EUR |
AZERBAÏDJAN | AZN |
BAHAMAS | BSD |
BARHEIN | BHD |
BANGLADESH | BDT |
BARBADE | BBD |
BÉLARUS | BYN |
BELGIQUE | EUR |
BELIZE | BZD |
BERMUDES | BMD |
BOLIVIE | BOB |
BOSNIE-HERZÉGOVINE | BAM |
BOTSWANA | BWP |
BRESIL | BRL |
BULGARIE | BGN |
CAMBODGE | KHR |
CAMEROUN | XAF |
CANADA | CA |
ÎLES CAÏMANS | KYD |
CHILE | CLP |
CHINE | CNY |
COLOMBIE | CdA |
CONGO-BRAZZAVILLE | XAF |
CONGO KINSHASA | CDF |
COSTA RICA | CRC |
CROATIE | HRK |
CURAÇAO | ANG |
CHYPRE | EUR |
CZECH REPUBLIC | CZK |
DANEMARK | DKK |
DJIBOUTI | Palette DJF |
DOMINIQUE | XCD |
RÉPUBLIQUE DOMINICAINE | Degré de parallélisme |
EQUATEUR | EUR |
EGYPTE | EGP |
EL SALVADOR | Cryptogramme visuel |
ESTONIE | EUR |
ETHIOPIE | ETB |
FINLANDE | EUR |
FRANCE | EUR |
FYR MACÉDONIE | MKD |
GABON | XAF |
GÉORGIE | GEL |
ALLEMAGNE | EUR |
GHANA | SGH |
GRÈCE | EUR |
GRENADE | XCD |
GUATEMALA | GTQ |
GUYANA | Année précédente |
Haïtien | HTG |
HONDURAS | HNL |
HONG KONG | HKD |
HONGRIE | HUF |
ISLANDE | ISK |
INDE | INR |
INDONESIE | Reconnaissance intelligente de documents |
IRAN | IRR |
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 | KG |
LAISSE | LAK |
LETTONIE | EUR |
LIBAN | LBP |
LIBYE | Année précédente |
LIECHTENSTEIN | CHF |
LITUANIE | EUR |
LUXEMBOURG | EUR |
MACAO | TOP |
MALAWI | MWK |
MALAISIE | MYR |
MALDIVES | RVM |
MALTA | EUR |
MAURITANIE | URG |
MAURICE | MUR |
MEXIQUE | MXN |
MOLDAVIE | MDL |
MONTENEGRO | EUR |
MAROC | MAD |
MOZAMBIQUE | MZN |
MYANMAR | MMK |
NAMIBIE | Distributeur à Valeur Ajoutée |
NEPAL | NPR |
NOUVELLE-ZELANDE | NZD |
NICARAGUA | NIO |
NIGERIA | NGN |
NORVEGE | NOK |
OMAN | Remplacement de mouvement de commande (OMR) |
PAKISTAN | PKR |
PANAMA | Tabulation |
PARAGUAY | PYG |
PÉRIODE | PEN |
PHILIPPINES | PHP |
POLOGNE | PLN |
PORTUGAL | EUR |
PORTO RICO | EUR |
QATAR | Rapport d'activité |
ROUMANIE | RON |
RUSSIE | RUB |
SAINT-CHRISTOPHE-ET-NIÉVÈS | XCD |
SAINTE-LUCIE | XCD |
ARABIE SAOUDITE | SAR |
SÉNÉGAL | XOF |
SERBIA | RSD |
SIERRA LEONE | SLL |
SINGAPOUR | SGD |
SLOVAQUIE | EUR |
SLOVENIE | EUR |
SOMALIE | SOS |
AFRIQUE DU SUD | ZAR |
SOUDAN DU SUD | SSP |
ESPAGNE | EUR |
SRI LANKA | LKR |
SOUDAN | ODD |
SURINAME | DA |
SUISSE | SZL |
SUEDE | SEK |
SUISSE | CHF |
SYRIE | SYP |
TAIWAN | TWD |
TANZANIE | TZS |
THAILANDE | THB |
PAYS-BAS | EUR |
TRINIDAD ET TOBAGO | Cumul depuis l'origine |
TUNISIE | TND |
TURQUIE | TRY |
TURQUIE | TMT |
UGANDA | UGX |
UKRAINE | UAH |
EMIRATS ARABES UNIS | AED |
ROYAUME-UNI | GBP |
URUGUAY | UYU |
OUZBEKISTAN | UZS |
VENEZUELA | VES |
VIETNAM | VND |
YEMEN | Année précédente |
ZAMBIE | ZMW |
ZIMBABWE | ZWL |
indexof
Détails de la fonction
Syntaxe de la fonction index0f
:
indexof (String, String [,int])
indexof (chaîne, chaîne [,start_pos]) : le nombre d'index commence par 0, renvoie l'index de correspondance à partir de 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 : extraire la partie pertinente du chemin d'API à partir du champ Journal d'audit OCI, 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'aide de la fonctionindexOf()
. - Trouvez la position du troisième
/
. - Extrayez les valeurs après le deuxième
/
, jusqu'au troisième/
, à 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 (chaîne, chaîne [, 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.
Voici quelques exemples d'utilisation de la fonction lastindexof
:
*|eval n = lastindexof(uri, '.com')
Cas d'emploi : extrayez 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 une recherche rétrospective. - 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 même fonction. Voici quelques 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 seule fonction
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
Détails de la fonction
Syntaxe de la fonction substr
:
substr(String, int [, int])
substr(Chaîne, 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'emploi où la fonction substr
est utilisée, reportez-vous à Détails de la fonction indexof et à Détails de la fonction lastindexof.
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')
Voici quelques 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)
Réductions url
définies par Oracle
Les raccourcis définis par Oracle suivants peuvent être utilisés avec la fonction url
pour la commande eval
.
Short-Cut | URL et description | Exemple |
---|---|---|
ora search:oracle |
https://www.google.com/search?q=site:oracle.com%20 Générer un lien pour rechercher toutes les chaînes spécifiées dans |
|
technologie oracle-tech |
https://community.oracle.com/tech/search?query= Générer un lien pour rechercher dans les forums de technologie Oracle |
|
mosc oracle-mosc |
https://community.oracle.com/mosc/search?query= Générer un lien pour rechercher dans les 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 effectuer une recherche à l'aide de Bing |
|
ddg canard de canard |
https://duckduckgo.com/?q= Générer un lien de recherche à l'aide de DuckDuckGo |
|
so dépassement de pile |
https://stackoverflow.com/search?q= Générer un lien de recherche à StackOverflow |
|
ve |
https://www.cve.org/CVERecord?id= Générer un lien pour l'ID CVE indiqué |
|