2 Preprocessament del valor de l'element

Vista general

El preprocessament s'empra per definir regles de transformació dels valors dels elements rebuts. Són possibles una o més transformacions abans de desar a la base de dades.

Les transformacions s'executen en l'ordre en què es defineixen. El preprocessament el fa el servidor o proxy Zabbix (si els elements són monitorats per proxy).

Tingueu en compte que tots els valors passats al preprocessament són de tipus string, la conversió al tipus de valor esperat (tal com es defineix a la configuració de l'element) es fa al final de la canalització de preprocessament; no obstant això, les conversions també poden tindre lloc si ho requereix la passa de preprocessament corresponent. Veieu detalls del preprocessament per obtindre més informació tècnica.

Veieu també: Exemples d'ús

Configuració

Les regles de preprocessament es defineixen a la pestanya Preprocessament del formulari configuració de l'element.

Un element es convertirà en no suportat si alguna de les passes de preprocessament falla, tret que s'hagi especificat la gestió d'errors personalitzada mitjançant una opció Personalitzada en cas d'error per a les transformacions admeses.

Per als articles del diari, les metadades del diari (sense valor) sempre restabliran l'estat no admès de l'element i tornaran a ser compatible amb l'element, fins i tot si l'error inicial es va produir després de rebre un valor de registre de l'agent.

Tant les macros d'usuari com les macros d'usuari amb context són compatibles amb els paràmetres de preprocessament del valor de l'element, inclòs el codi JavaScript.

El context s'ignora quan es substitueix una macro pel seu valor. El valor de la macro s'insereix tal com és al codi, no és possible afegir una escapada addicional abans de posar valor al codi JavaScript. Tingueu en compte que això pot provocar errors de JavaScript en alguns casos.

|Tipus|<|<| |-|-----------|-------------------------------------- ----| | |Transformació|Descripció| |Text|<|<| | |Expressió regular|Fa coincidir el valor amb l'expressió regular <patró> i substitueix el valor per <sortida>. L'expressió regular permet extreure un màxim de 10 grups capturats amb la seqüència \N. Si el valor d'entrada no coincideix, l'element no serà compatible.
Paràmetres:
patró - expressió regular
sortida - patró de format de sortida. Una seqüència d'escapada \N (on N=1...9) es substitueix pel grup enèssim corresponent. Una seqüència d'escapada \0 es substitueix pel text corresponent.
Consulteu la secció expressions regulars per veure alguns exemples existents.
Si marqueu el Personalitzat en cas d'error , l'element no serà compatible si la passa de preprocessament falla i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor o per establir un valor especificat, o per establir un missatge d'error especificat.| |^|Reemplaça|Cerqueu la cadena de cerca i substituïu-la per una altra (o per res). Es substituiran totes les ocurrències de la cadena de cerca.
Paràmetres:
cadena de cerca - la cadena a cercar i substituir, distingeix entre majúscules i minúscules (obligatori)
** substituir** - la cadena a substituir amb la cadena de cerca. La cadena de substitució també pot ésser buida, la qual cosa permet esborrar la cadena de cerca quan la trobi.
És possible emprar seqüències d'escapada per cercar o substituir salts de línia, retorns de carro, tabulacions i espais "\n \r \ t \s"; la barra invertida es pot escapar com a "\\" i les seqüències d'escapament es poden escapar com a "\\n". Els salts de línia, els retorns de carro i les pestanyes s'escapen automàticament durant la descoberta de baix nivell.| |^|Retallar|Esborra els caràcters especificats al principi i al final del valor.| |^|Retalla a la dreta|Esborra els caràcters especificats del final del valor.| |^|Retalla a l'esquerra|Esborra els caràcters especificats del principi del valor.| |Dades estructurades|<|<| | |XPath XML|Extreu valor o fragment de dades XML mitjançant la funcionalitat XPath.
Per tal que aquesta opció funcioni, el servidor Zabbix s'ha de compilar amb suport libxml.
Exemples:< br>number(/document/item /value) extreu 10 de <document><item><value>10</value></item></document>
number(/document/item/@attribute) extreu 10 de <document><item attribute="10"></item></document>
/document/item extreu <item><value> 10</value></item> de <document><item><value>10</value></item></document>
Tingueu en compte que els espais de noms no són compatibles.
Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar errors d'opcions de gestió personalitzades: per ignorar el valor, per establir un valor especificat o per establir un missatge d'error especificat.| |^|JSONPath|Extreu el valor o el fragment de les dades JSON mitjançant la funcionalitat JSONPath.
Si marqueu el Personalitzat en error, l'element no s'admetrà si la passa de preprocessament falla i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor, per establir un valor especificat o per establir un missatge d'error especificat.| |^|CSV a JSON|Convertir les dades del fitxer CSV al format JSON.
Per obtindre més informació, consulteu: Preprocessament de CSV a JSON.| |^|XML a JSON|Convertir dades en format XML a JSON.
Per obtindre més informació, veieu: Regles de serialització.
Si marqueu la casella Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar errors d'opcions de gestió personalitzades: per ignorar el valor, per establir un valor especificat o per establir un missatge d'error especificat.| |Aritmètica|<|<| | |Multiplicador personalitzat|Multiplica el valor per l'enter o el valor de coma flotant especificat.
Fes servir aquesta opció per convertir els valors rebuts a Ko, Mops, etc. en o, ops. En cas contrari, Zabbix no pot establir correctament prefixos (K, M, G, etc.).
Tingueu en compte que si el tipus d'element de dades és Numèric (sense signe), els valors entrants es retallaran amb una part fraccionària (és a dir, '0,9' es convertirà en '0') abans que s'apliqui el multiplicador personalitzat.
Suport: notació científica, per exemple, 1e+70 (des de la versió 2.2); macros d'usuari i macros LLD (des de la versió 4.0); cadenes que inclouen macros, per exemple, {#MACRO}e+10, {$MACRO1}e+{$MACRO2} (des de la versió 5.2.3)
Les macros s'han de resoldre en un nombre enter o flotant.< br>Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar opcions per al tractament d'errors personalitzats: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |Canvi|<|<| | |Canvi simple|Calculeu la diferència entre el valor actual i el valor anterior.
S'avalua com a valor-valor_anterior, on
valor - valor actual; valor_precedent - valor rebut anteriorment
Aquest paràmetre pot ser útil per mesurar un valor que augmenta constantment. Si el valor actual és inferior al valor anterior, Zabbix ignora aquesta diferència (no emmagatzema res) i espera un altre valor.
Només es permet una operació d'edició per element.
Si marqueu Personalitzar en cas d'error , l'element no serà compatible si la passa de preprocessament falla i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor o per establir un valor especificat, o per establir un missatge d'error especificat.| |^|Canvi per segon|Calculeu la taxa de canvi de valor (diferència entre el valor actual i anterior) per segon.
Avaluat com a (valor-valor_anterior)/(temps-hora_anterior), on
valor - valor actual; previous_value - valor rebut anteriorment; time - marca de temps actual; time_previous - marca de temps del valor anterior.
Aquest paràmetre és molt útil per obtindre la velocitat per segon per a un valor que augmenta constantment. Si el valor actual és inferior al valor anterior, Zabbix ignora aquesta diferència (no emmagatzema res) i espera un altre valor. Això permet que funcioni bé, per exemple, amb embolcall de comptador SNMP de 32 bits (desbordament).
Nota: Com que aquest càlcul pot produir nombres de coma flotant, es recomana establir el "Tipus d'informació" a Numèric (flotant), fins i tot si els valors en brut entrants són nombres enters. Això és especialment rellevant per a nombres petits on la part decimal compta. Si els valors de coma flotant són grans i poden superar la longitud del camp "float", en aquest cas es pot perdre el valor sencer, en realitat es recomana emprar Numèric (sense signe) i, per tant, esborrar només la part decimal .
Només es permet una operació d'edició per element.
Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament i és possible especificar opcions de gestió d'errors personalitzades: ignora el valor, estableix un valor especificat o estableix un missatge d'error especificat.| |Sistemes digitals|<|<| | |Booleà a decimal|Converteix el valor del format booleà a decimal. La representació textual és traduïda com a 0 o 1. Per tant, "TRUE" s'emmagatzema com a 1 i "FALSE" s'emmagatzema com a 0. Tots els valors coincideixen si no distingeixen entre majúscules i minúscules. Els valors reconeguts actualment són, per a:
TRUE - true, t, yes, y, on, up, running, enabled, available, ok, master
FALSE - false, f, no, n , off, down, unused, disabled, unavailable, err, slave
A més, qualsevol valor numèric diferent de zero es considera TRUE i zero es considera FALSE. L'element no serà compatible si la passa de preprocessament falla, i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor o per establir un valor especificat, o per establir un missatge d'error especificat.| |^|Octal a Decimal|Converteix el valor del format octal a decimal.
Si marqueu la casella Personalitzat en cas d'error, l'element no quedarà incompatible si la passa de preprocessament fallés i és possible especificar-lo. Opcions de gestió d'errors personalitzades: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |^|Hexadecimal a Decimal|Converteix el valor del format hexadecimal a decimal.
Si marqueu la casella Personalitzat en cas d'error, l'element no serà compatible si falla la passa de preprocessament i és possible especificar-lo. Opcions de gestió d'errors personalitzades: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |Scripts personalitzats|<|<| | |JavaScript|Introduïu el codi JavaScript al bloc que apareix quan feu clic al camp de paràmetres o a una icona de llapis.
Tingueu en compte que la longitud de JavaScript disponible depèn de la base de dades emprada.
Per obtindre més informació, veieu: Preprocessament de Javascript.| |Validació|<|<| | |A l'interval|Definiu un interval dins del qual un valor ha de caure especificant valors mínims/màxims (inclosos).
S'accepten valors numèrics (incloent qualsevol nombre de dígits, part decimal opcional i part exponencial opcional, valors negatius). Es poden emprar macros d'usuari i macros de descoberta de baix nivell. El valor mínim ha d'ésser inferior al valor màxim.
Ha d'existir com a mínim un valor.
Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no quedarà incompatible en cas d'error de la passa de preprocessament i és possible especificar opcions personalitzades de gestió d'errors: per ignorar el valor, o per establir un valor especificat, o per establir un missatge d'error especificat.| |^|Coincideix amb l'expressió regular|Especifiqueu una expressió regular amb la qual ha de coincidir un valor.
Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar-lo. Opcions de gestió d'errors personalitzades: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |^|No coincideix amb l'expressió regular|Especifiqueu una expressió regular amb la qual un valor no ha de coincidir.
Si marqueu la casella Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |^|Cerqueu un error al JSON|Cerqueu un missatge d'error a nivell d'aplicació situat al JSONpath. Atura el processament si té èxit i si el missatge no és buit; en cas contrari, continueu el processament amb el valor que hi havia abans d'aquesta passa de preprocessament. Tingueu en compte que aquests errors de servei extern s'informaran a l'usuari tal qual, sense afegir informació sobre la passa de preprocessament.
No s'informarà d'errors si l'anàlisi de JSON no vàlid falla.< br>Si marqueu la casella Personalitzat en cas d'error, l'element no serà compatible si la passa de preprocessament falla i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor, per establir un valor especificat o per establir un missatge d'error especificat.| |^|Cerca un error a l'XML|Cerca un missatge d'error a nivell d'aplicació situat a XPath. Atura el processament si té èxit i si el missatge no és buit; en cas contrari, continueu el processament amb el valor que hi havia abans d'aquesta passa de pretractament. Tingueu en compte que aquests errors de servei extern s'informen a l'usuari tal qual, sense afegir informació sobre la passa de preprocessament.
No s'informarà d'error si l'anàlisi d'un XML no vàlid falla.
Si marqueu la casella de selecció Personalitzat en cas d'error, l'element no quedarà incompatible si la passa de preprocessament falla i és possible especificar opcions personalitzades per a la gestió d'errors: per ignorar el valor, per establir un valor especificat o per establir un missatge d'error especificat.| |^|Cerca un error mitjançant una expressió regular|Cerca un missatge d'error a nivell d'aplicació mitjançant una expressió regular. Atura el processament si té èxit i si el missatge no és buit; en cas contrari, continueu el processament amb el valor que hi havia abans d'aquest pas de preprocessament. Tingueu en compte que aquests errors de servei extern s'informen a l'usuari tal qual, sense afegir informació sobre la passa de preprocessament.
Paràmetres:
patró - expressió regular
sortida - patró de format de sortida. Una seqüència d'escapada \N (on N=1...9) es substitueix pel grup enèssim corresponent. Es substitueix una seqüència d'escapada \0 pel text corresponent.
Si marqueu la casella Personalitzat en cas d'error, l'element no quedarà incompatible en cas d'error de la passa de preprocessament i és possible especificar opcions de gestió d'errors personalitzades: per ignorar el valor, establir un valor especificat o establir un missatge d'error especificat.| |^|Comprova si un valor no és compatible|Comprova si hi ha hagut un error en recuperar el valor de l'element. Normalment això comportaria que l'element no s'admetés, però podeu canviar aquest comportament especificant les opcions de gestió d'errors Personalitzat en cas d'error: ignorar el valor, establir un valor especificat (en aquest cas, l'element es mantindrà compatible i el valor es pot emprar en triggers) o establir un missatge d'error especificat. Tingueu en compte que per a aquesta passa de preprocessament, la casella de selecció Personalitza en cas d'error és en gris i sempre marcada.
Aquesta passa sempre s'executa com a primera passa de preprocessament i es posa per sobre de tots els altres després de desar els canvis a l'element. Només es pot emprar una vegada.
Admès des de la versió 5.2.0.| |Escanyament|<|<| | |Descartar sense canvis|Ignorar un valor si no ha canviat.
Si s'ignora un valor, no es desa a la base de dades i el servidor Zabbix no sap que aquest valor s'ha canviat. No s'avaluarà cap trigger i, per tant, no es crearan ni resoldran problemes relacionats amb els triggers. Les funcions només funcionaran en funció de les dades realment desades a la base de dades. Com que les tendències es creen a partir de les dades de la base de dades, si no hi ha cap valor registrat durant una hora, tampoc no hi haurà dades de tendències per a aquesta hora.
Només es pot especificar una opció d'acceleració per a un element.
Tingueu en compte que és possible per als elements monitorats pel proxy Zabbix que les diferències de valor molt petites (menys de 0,000001) no s'esborrin correctament pel proxy, però s'emmagatzemen a l'historial amb el mateix valor si la base de dades del servidor Zabbix no s'ha actualitzat.| |^|Descartar sense canvis amb el bit de vida|Ignoreu un valor si no ha canviat en el període de temps especificat (en segons).
S'admeten valors enters positius per especificar segons (mínim - 1 segon). Els sufixos de temps es poden emprar en aquest camp (per exemple, 30 s, 1 m, 2 h, 1 d). En aquest camp es poden emprar macros d'usuari i macros de descoberta de baix nivell.
Si s'ignora un valor, no es desa a la base de dades i el servidor Zabbix no sap que s'ha rebut aquest valor. No s'avaluarà cap trigger i, per tant, no es crearan ni resoldran problemes relacionats amb els triggers. Les funcions només funcionaran en funció de les dades realment desades a la base de dades. Com que les tendències es creen a partir de les dades de la base de dades, si no hi ha cap valor registrat durant una hora, tampoc no hi haurà dades de tendències per a aquesta hora.
Només es pot especificar una opció d'acceleració per a un element.
Tingueu en compte que només és possible per als elements monitorats pel proxy Zabbix les diferències de valors petites (menys de 0,000001) no s'esborren correctament pel proxy, però s'emmagatzemen a l'historial amb el mateix valor si la base de dades del servidor Zabbix [no s'ha actualitzat] (https://www.zabbix.com/documentation/5.0/manual/installation/upgrade_notes_500#enabling_extended_range_of_numeric_float_values).| |Prometheus|<|<| | |Patró de Prometheus|Empreu la consulta següent per extreure les dades necessàries de les mètriques de Prometheus.
Consulteu les comprovacions de Prometheus per obtindre més informació.| |^|Prometheus a JSON|Convertiu les mètriques de Prometheus requerides a JSON.
Consulteu les comprovacions de Prometheus per obtindre més informació.|

Per modificar i limitar les passes de preprocessament, Zabbix ha de recordar el darrer valor per calcular/comparar el nou valor segons sigui necessari. Aquests valors anteriors els gestiona el gestor de preprocessament. Si es reinicia el servidor o el proxy Zabbix o es fan canvis a les passes de preprocessament, es restableix el darrer valor de l'element corresponent, donant lloc a:

  • per a passes Canvi únic, Canvi per segon - el valor següent s'ignorarà perquè no hi ha cap valor anterior per calcular el canvi;
  • per a les passes Descartar el que no ha canviat, Descartar sense canvis amb bit viu - el valor següent no s'esborrarà mai, encara que hauria d'haver sigue a causa de regles d'esborrat.

El paràmetre Tipus d'informació de l'element es mostra a la part inferior de la pestanya quan es defineix almenys una passa de preprocessament. Si cal, és possible modificar el tipus d'informació sense sortir de la pestanya Preprocessament. Veieu la creació d'un element per a la descripció detallada dels paràmetres.

Si empreu un multiplicador personalitzat o un valor d'emmagatzematge com ara Canvis per segon per als elements amb el tipus d'informació establert a Numèric (sense signe) i el valor calculat resultant és en realitat un nombre flotant, el valor calculat encara s'admet com el valor correcte esborrant la part decimal i emmagatzemant el valor com a nombre enter.

Prova

La prova de les passes de preprocessament és útil per assegurar-se que les canalitzacions complexes de preprocessament produeixen els resultats esperats, sense esperar que el valor de l'article sigui rebut i preprocessat.

Es pot provar:

  • amb un valor hipotètic
  • amb un valor real d'equip

Cada passa de preprocessament es pot provar individualment i totes les passes es poden provar plegades. Quan feu clic al botó Prova o Prova totes les passes respectivament al bloc Accions, s'obre una finestra de prova.

Provar un valor hipotètic

Paràmetre Descripció
Obtindre valor de l'equip Si voleu provar un valor hipotètic, deixeu aquesta casella sense marcar.
Veieu també: Prova del valor real.
Valor Introduïu el valor d'entrada a provar.
Fent clic al camp del paràmetre o al botó de visualització/edició s'obrirà una finestra de quadre de text per introduir el valor o el bloc de codi.
No admès Marqueu aquesta casella per comprovar si hi ha un valor no admès.
Aquesta opció és útil per provar la passa de preprocessament Comprova si hi ha valors no compatibles.
Hora Es mostra l'hora del valor d'entrada: ara (només lectura).
Valor anterior Introduïu un valor d'entrada anterior per comparar.
Només per les passes de preprocessament Canvi simple i Acelerador.
Hora anterior Introduïu l'hora del valor d'entrada anterior per comparar.
Només per les passes de preprocessament Canvi simple i Throttle.
El valor predeterminat es basa en el valor del camp "Interval d'actualització" de l'element. (si és "1m", aquest camp s'omple amb "ara-1m"). Si no s'especifica res o l'usuari no té accés a l'equip, el valor per defecte és now-30s.
Macros Si s'empren macros, s'enumeren amb els seus valors. Els valors es poden editar amb finalitats de prova, però els canvis només es desaran en el context de la prova.
Seqüència de final de línia Seleccioneu la seqüència de final de línia per als valors d'entrada de diverses línies:
LF - Seqüència LF (salt de línia)
CRLF - Seqüència CRLF (retorn de carro -alimentació de línia).
Passes de preprocessament S'enumeren les passes de preprocessament; el resultat de la prova es mostra per a cada passa després de fer clic al botó Prova.
Si la passa ha fallat, es mostra una icona d'error. La descripció de l'error es mostra al passar el ratolí.
Si s'especifica "Personalitzat en cas d'error" per la passa i es realitza l'acció, apareix una línia nova just després de la línia de la passa de prova de preprocessament, que indica quina acció s'ha realitzat i quin resultat produeix (error o valor).
Resultat El resultat final de la prova de les passes de preprocessament es mostra en tots els casos quan totes les passes es comencen a provar (quan feu clic al botó Prova totes les passes).
El tipus de conversió a l'element també mostra el tipus de valor, per exemple Resultat convertit a numèric (sense signe).

Feu clic a Prova per veure el resultat després de cada passa de preprocessament.

Els valors de prova s'emmagatzemen entre sessions de prova per a passes individuals o totes les passes, permetent a l'usuari canviar les passes de preprocessament o la configuració de l'element i després tornar a la finestra de prova sense haver de tornar a introduir informació. Tanmateix, els valors es perden durant una actualització de la pàgina.

Les proves les realitza el servidor Zabbix. El frontend envia una petició corresponent al servidor i espera el resultat. La petició conté el valor d'entrada i les passes de preprocessament (amb macros d'usuari ampliades). Per a les etapes Canvi i Accelerador, es pot especificar un valor i una hora anteriors opcionals. El servidor respon amb resultats per a cada passa de preprocessament.

Qualsevol error tècnic o error de validació d'entrada es mostra al quadre d'error a la part superior de la finestra de prova.

Provant valors reals

Per provar el preprocessament amb un valor real:

  • Marqueu la casella de selecció Obtindre el valor de l'equip
  • Introduïu o verifiqueu els paràmetres de l'equip (adreça de l'equip, port, nom proxy) i detalls específics de l'element (com les credencials de seguretat de la comunitat SNMPv2 o SNMPv3). Aquests camps tenen en compte el context:
    • Els valors s'emplenen prèviament quan sigui possible, és a dir, per als articles que requereixen un agent, prenent la informació de la interfície triada de l'agent de l'equip
    • Els valors s'han d'omplir manualment per als elements de plantilla
    • Es resolen els valors de macro de text pla
    • Camps on el valor (o part del valor) és un secret o les macros de Vault són buides i s'han d'introduir manualment. Si el paràmetre d'element conté un valor de macro secret, es veurà el següent missatge d'avís: "L'element conté macros definides per l'usuari amb valors secrets. S'han d'introduir a mà els valors d'aquestes macros".
    • Els camps es desactiven quan no són necessaris en el context del tipus d'element (per exemple, l'adreça de l'equip i els camps de proxy es desactiven per als elements calculats)
  • Feu clic a Obtindre valor i prova per provar el preprocessament

Si heu especificat una assignació de valors al formulari de configuració de l'element (camp "Mostra el valor"), el diàleg de prova de l'element mostrarà una altra línia després del resultat final, anomenada "Resultat amb mapa de valors aplicat".

Paràmetres específics per obtindre un valor real d'un equip:

Paràmetre Descripció
Obtindre valor de l'equip Marqueu aquesta casella de selecció per obtindre un valor real de l'equip.
Adreça de l'equip Introduïu l'adreça de l'equip.
Aquest camp s'emplena automàticament amb l'adreça de la interfície de l'equip de l'element.
Port Introduïu el port de l'equip.
Aquest camp s'emplena automàticament pel port de la interfície de l'equip de l'element.
Camps addicionals per a les interfícies SNMP
(versió SNMP, comunitat SNMP, nom de context, etc.)
Consulteu la configuració del monitoratge SNMP per obtindre informació addicional i detalls sobre la configuració d'una interfície SNMP (v1, v2 i v3).
Aquests camps s'emplenen automàticament des de la interfície de l'equip de l'element.
Proxy Especifiqueu el proxy si l'equip és monitorat per un proxy.
Aquest camp s'emplena automàticament pel proxy de l'equip (si n'hi ha).

Per a la resta de paràmetres, veieu la prova hipotètica de valor anterior.