eval
Utilisez la commande eval pour calculer la valeur d'une expression et afficher la valeur dans un nouveau champ.
-
Alors que la commande
statscalcule les statistiques en fonction des champs existants, la commandeevalcrée de nouveaux champs en utilisant des champs existants et des expressions arbitraires. -
Les fonctions de traitement de chaîne telles que
indexofetsubstrnécessitent beaucoup de ressources. Pour cette raison, il n'est pas recommandé d'exécuter la commandeevalavec ces fonctions sur un grand nombre d'enregistrements de journal ou sur des valeurs de champ volumineuses. À la place, extrayez ces valeurs à l'aide des définitions de champ étendu (EFD) ou des étiquettes dans votre source de journaux. Voir Use Extended Fields in Sources (Utiliser des champs étendus dans les sources) et Use Labels in Sources (Utiliser des étiquettes dans les sources). -
Assurez-vous que le nom de champ utilisé dans la commande
evalne 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 multiple |
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
|
|
Fonctions conditionnelles |
Pour des exemples d'utilisation des fonctions |
|
Fonctions de hachage |
Note : 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 types, voir :
- Renommer les champs en modifiant l'interrogation
- Marquer l'unité pour un champ au moment de l'interrogation
- Histogramme
- Visualiser les données de série chronologique à l'aide de la fonction de tendance Link
- Générer des graphiques avec des champs virtuels
- Link à l'aide de l'énoncé SQL en tant que champ d'analyse
- Analyser le temps nécessaire entre les étapes d'une transaction
- Utiliser les fonctions de navigation Link pour identifier des événements dans une base de données
- Ajouter des URL à la table Link
- Utiliser l'URL raccourcie avec un nom personnalisé
- Utiliser les symboles de devise dans votre analyse de journal
Voici quelques exemples de la 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 à un intervalle de sous-réseaux.
*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')L'exemple suivant retourne la chaîne "Target".
*|eval newField = literal(Target)L'exemple suivant supprime les espaces et les tabulations des deux extrémités.
*|eval newField = trim(Label)L'exemple suivant supprime le caractère de mise en correspondance des deux extrémités.
*|eval newField = trim('User Name',h)L'exemple suivant supprime le caractère de mise en correspondance de l'extrémité gauche.
*|eval newField = ltrim('Error ID',0)L'exemple suivant supprime le caractère de mise en correspondance de l'extrémité droite.
*|eval newField = rtrim('OS Process ID',2)L'exemple suivant règle le champ date à Start Date et définit le format de la date comme 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 une décimale et n est évalué à 255 :
* | eval n = toNumber('0xFF')L'exemple suivant convertit un nombre octal en décimal et n est évalué à 10 :
* | eval n = toNumber('012')La commande suivante calcule la distance (en milles) entre deux paires de coordonnées lat-longues 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 milles) 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 communes 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 interrogations ci-dessus sur la visualisation de vignette avec l'option Format Number (Numéro de format) cochée pour obtenir les meilleurs résultats.
Un champ avec une taille ou un type de durée unité est utilisé pour formater les valeurs dans le graphique d'analyse Link, les histogrammes addfields, la table Link et la visualisation Vignette :
'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 respectivement des dollars américains, des milliers de dollars américains, des millions de dollars américains ou des milliards de dollars américains :
| 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 :
BYTEKILOBYTE | KBMEGABYTE | MBGIGABYTE | GBTERABYTE | TBPETABYTE | PBEXABYTE | EB
- Temps :
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
- Power :
WATTKILOWATT | kWMEGAWATT | MWGIGAWATT | GWTERAWATT | TWPETAWATT | PWEXAWATT | EW
- Température :
KELVIN | KCELSIUS | CFAHRENHEIT | F
- Fréquence :
HERTZ | HzKILOHERTZ | kHzMEGAHERTZ | MHzGIGAHERTZ | GHzTERAHERTZ | THzPETAHERTZ | PHzEXAHERTZ | EHz
Types de devise pris en charge dans la fonction unit
Vous ne pouvez utiliser cette fonction que pour la commande eval sous la commande link. Voir les exemples de liens de commande eval pour utiliser la fonction dans des scénarios types.
Indiquez l'unité de devise dans le 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 de devise, voir Normes ISO.
NLS_Territory |
Devise |
|---|---|
| AFGHANISTAN | AFN |
| ALBANIE | Tout |
| ALGÉRIE | DZD |
| AMÉRIQUE | USD |
| ANGOLA | AOA |
| ANTIGUA-ET-BARBUDA | XCD |
| ARGENTINE | ARS |
| ARMÉNIE | AMD |
| ARUBA | Groupe AWG |
| AUSTRALIE | AUD |
| AUTRICHE | EUR |
| AZERBAÏDJAN | AZN |
| BAHAMAS | BSD |
| BAHREÏN | Démon de messages retournés |
| BANGLADESH | BDT |
| LA BARBADE | BBD |
| BELARUS | Nom d'utilisateur |
| BELGIQUE | EUR |
| BELIZE | BZD |
| BERMUDES | BMD |
| BOLIVIE | Secteur d'activité |
| BOSNIE-HERZÉGOVINE | BAM |
| BOTSWANA | PRP |
| BRÉSIL | BRL |
| BULGARIE | BGN |
| CAMBODGE | KHR |
| CAMEROUN | XAF |
| CANADA | CAD |
| ÎLES CAÏMANS | KYD |
| CHILI | CLP |
| CHINE | CNY |
| COLOMBIE | COP |
| CONGO BRAZZAVILLE | XAF |
| CONGO KINSHASA | CDC |
| COSTA RICA | CRCD |
| CROATIE | Clé HR |
| CURACAO | ANG |
| CHYPRE | EUR |
| RÉPUBLIQUE TCHÈQUE | CZK |
| DANEMARK | DKK |
| DJIBOUTI | DJF |
| DOMINIQUE | XCD |
| RÉPUBLIQUE DOMINICAINE | DOP |
| ÉQUATEUR | USD |
| ÉGYPTE | 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 | GTQ |
| GUYANE | Année précédente |
| HAITI | HTG |
| HONDURAS | HNL |
| HONG KONG | HKD |
| HONGRIE | HUF |
| ISLANDE | ISK |
| INDE | INR |
| INDONÉSIE | 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 | Système d'exploitation |
| CORÉE | Pondération de risque |
| KOWEÏT | KWD |
| KIRGHIZISTAN | KGS |
| LAOS | LAC |
| LETTONIE | EUR |
| LIBAN | LBP |
| BIBLIOTHÈQUE | LYD |
| LIECHTENSTEIN | CHF |
| LITUANIE | EUR |
| LUXEMBOURG | EUR |
| MACAO | RdP |
| MALAWI | MWK |
| MALAISIE | MYR |
| MALDIVES | Taux de change |
| MALTE | EUR |
| MAURITANIE | MRU |
| ÎLE MAURICE | MUR |
| MEXIQUE | MXN; |
| MOLDAVIE | MDL |
| MONTÉNÉGRO | EUR |
| MAROC | MAD |
| MOZAMBIQUE | MZN |
| BIRMANIE | MMK |
| NAMIBIE | NCD |
| NÉPAL | NPR |
| NOUVELLE-ZÉLANDE | NZD |
| NICARAGUA | NIO |
| NIGÉRIA | NGN |
| NORVÈGE | NOK |
| OMAN | Remplacement de déplacement de commande |
| PAKISTAN | PKR |
| PANAMA | PAB |
| PARAGUAY | PYG |
| PÉROU | Crayon |
| PHILIPPINES | PHP |
| POLOGNE | PLN |
| PORTUGAL | EUR |
| PORTO RICO | USD |
| TARIF | Écart global |
| ROUMANIE | RON |
| RUSSIE | RUB |
| SAINT-KITTS-ET-NEVIS | XCD |
| SAINTE-LUCIE | XCD |
| ARABIE SAOUDITE | SAR |
| SÉNÉGAL | XOF |
| SERBIE | RSD |
| SIERRA LEONE | SLL |
| SINGAPOUR | SGD |
| SLOVAQUIE | EUR |
| SLOVÉNIE | EUR |
| SOMALIE | SOS |
| AFRIQUE DU SUD | ZAR |
| SOUDAN DU SUD | Prix de vente autonome |
| ESPAGNE | EUR |
| SRI LANKA | LKR |
| SOUDAN | Objet SDG |
| SURINAME | SRD |
| SUISSE | SZL |
| SUÈDE | SEK |
| SUISSE | CHF |
| SYRIE | SYP |
| TAIWAN | TWD |
| TANZANIE | TZS |
| THAÏLANDE | THB |
| PAYS-BAS | EUR |
| TRINIDAD ET TOBAGO | C/T |
| TUNISIE | TND |
| TURQUIE | ESSAYER |
| TURKMÉNISTAN | TMT |
| OUGANDA | UGX |
| UKRAINE | UAH |
| ÉMIRATS ARABES UNIS | AED |
| ROYAUME-UNI | GBP |
| URUGUAY | UYU |
| OUZBÉKISTAN | UZS |
| VENEZUELA | ESP |
| VIETNAM | VND |
| YEMEN | OUI |
| ZAMBIE | ZMW |
| ZIMBABWE | ZWL |
Détails de la fonction indexof
Syntaxe de la fonction index0f :
indexof (String, String [,int])indexof (String, String [,start_pos]) : Le nombre d'index commence par 0, retourne l'index de correspondance à partir de start_pos (s'il est indiqué) et retourne -1 si aucune correspondance n'est indiquée.
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 de l'API à partir des journaux du service de vérification 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'aide de la fonctionindexOf(). - Trouvez la position du troisième
/. - Extraire 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, APIExemple de sortie :

Détails de la fonction lastindexof
Syntaxe de la fonction lastindexof :
lastindexof(String, String, int)lastindexof (String, String [, end_pos]) : Le nombre d'index commence par 0, retourne l'index de la dernière occurrence de la sous-chaîne avant end_pos (s'il est fourni) et retourne -1 si aucune correspondance n'est indiquée. L'argument end_pos est facultatif.
Exemples d'utilisation de la fonction lastindexof :
*|eval n = lastindexof(uri, '.com')Cas d'utilisation : Extraire la zone du champ Type dans les journaux de vérification 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'aide delastIndexOf(). - À 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 en arrière. - Extraire la valeur entre ces deux postes à 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, AreaExemple de sortie :

Détails de la fonction replace
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 de plusieurs actions de remplacement 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')
Détails de la fonction substr
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 (inclusif) est 2 et l'index de fin (exclusif) est 4. Notez que 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, voir indexof Function Details et lastindexof Function Details.
Détails de la fonction url
Syntaxe pour la fonction url :
url(String, Name, Parameter)Les valeurs Name et Parameter sont facultatives.
- String : Il peut s'agir d'une URL ou d'un des noms abrégés prédéfinis. Par exemple :
eval Link = url('https://www.oracle.com') - Name : Nom facultatif pour 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)
Raccourcis url définis par Oracle
Les raccourcis définis par Oracle suivants sont disponibles pour utilisation avec la fonction url pour la commande eval.
| Coupe courte | URL et description | Exemple |
|---|---|---|
|
ora recherche:oracle |
https://www.google.com/search?q=site:oracle.com%20Gé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 des forums technologiques 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 canard |
https://duckduckgo.com/?q=Générer un lien pour effectuer une recherche à l'aide de DuckDuckGo |
|
|
so flux de dépassement de pile |
https://stackoverflow.com/search?q=Générer un lien pour effectuer une recherche à l'adresse StackOverflow |
|
|
Cve |
https://www.cve.org/CVERecord?id=Générer un lien pour l'ID CVE indiqué |
|