Descripción general
La fórmula (o expresión) define el valor del campo calculado para cada evento de registro. Puede hacer referencia a atributos de registro, otros campos calculados y funciones y operadores compatibles. A medida que escribe o edita una fórmula, el editor sugiere automáticamente campos, funciones y operadores relevantes.
Sintaxis básica y construcciones de lenguaje
| Construcción | Sintaxis y notación |
|---|
Atributo o etiqueta reservada con nombre tag | tag (no se requiere prefijo) Para etiquetas que contienen guiones, escápelos con una barra invertida. Ejemplo: ci\-job\-id |
Atributo con nombre attr | @attr (use un prefijo @) |
Campo calculado con nombre field | #field (use un prefijo #) |
Literal de cadena (comillas) Por ejemplo, text o Quoted "text". | "text"
"Quoted \"text\"" (se aplica Sintaxis de búsqueda de registros) |
Literal numérico (número) Por ejemplo, ten. | 10 |
Función con nombre func con parámetros x y y | func(x, y) |
Operador Por ejemplo, un operador binario * con operandos x y y. | x*y |
Operadores
Los operadores disponibles en orden de precedencia:
| Operador | Descripción |
|---|
() | Una agrupación o llamada a función |
!, NOT, - | Una negación lógica o aritmética |
^, % | Exponenciación, módulo |
*, / | Multiplicación, división |
+, - | Suma, resta |
<, <=, >, >= | Menor que, menor o igual que, mayor que, mayor o igual que |
==, != | Coincide, no coincide |
&&, AND | AND lógico |
||, OR | OR lógico |
Funciones
Las funciones disponibles se clasifican de la siguiente manera:
Aritmética
abs(num valor)
Devuelve el valor absoluto de un número.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene los siguientes atributos: - @client_latency = 2 - @server_latency = 3 | #discrepancy = abs(@client_latency - @server_latency) | #discrepancy = 1 |
ceil(num valor)
Redondea el número hacia arriba al entero más cercano.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@value = 2.2 | #rounded_up = ceil(@value) | #rounded_up = 3 |
floor(num value)
Redondea el número hacia abajo al entero más cercano.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@value = 9.99 | #rounded_down = floor(@value) | #rounded_down = 9 |
max(num value, [ num value, …])
Encuentra el valor máximo entre un conjunto de números.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@CPU_temperatures = [-1, 1, 5, 5] | #highest_temp = max(@CPU_temperatures) | #highest_temp = 5 |
min(num value, [num value, …])
Encuentra el valor mínimo entre un conjunto de números.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@CPU_temperatures = [-1, 1, 5, 5] | #lowest_temp = min(@CPU_temperatures) | #lowest_temp = -1 |
round(num value, int precision)
Redondea un número. Opcionalmente, defina cuántos decimales mantener.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@value = -1234.01 | #rounded_to_tens = round(@value, -1) | #rounded_to_tens = -1230 |
Cadena
concat(str cadena [str cadena, expr valor, …])
Combina varios valores en una sola cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene los siguientes atributos: - @city = “Paris” - @country = “France” | #region = concat(@city, ", ", @country) | #region = “Paris, France” |
lower(str cadena)
Convierte la cadena a minúsculas.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@first_name = “Bob” | #lower_name = lower(@first_name) | #lower_name = “bob” |
left(str cadena, int num_caracteres)
Extrae una porción de texto desde el principio de una cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@price = "USD10.50" | #currency = left(@price, 3) | #currency = "USD" |
proper(str cadena)
Convierte la cadena a formato de mayúsculas y minúsculas.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@address = "123 main st" | #formatted_address = proper(@address) | #formatted_address = "123 Main St" |
split_before(str cadena, str separador, int ocurrencia)
Extrae la parte del texto que precede a un patrón determinado en una cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@url = "www.example.com/path/to/split" | #url_extraction = split_before(@url, "/", 1) | #url_extraction = "www.example.com/path" |
#url_extraction = split_before(@url, "/", 2) | #url_extraction = "www.example.com/path/to" |
split_after(str cadena, str separador, int ocurrencia)
Extrae la porción de texto que sigue a un patrón determinado en una cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@url = "www.example.com/path/to/split" | #url_extraction = split_after(@url, "/", 0) | #url_extraction = "path/to/split" |
#url_extraction = split_after(@url, "/", 1) | #url_extraction = "to/split" |
substring(str cadena, int inicio, int longitud)
Extrae una porción de texto desde el medio de una cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@price = “USD10.50” | #dollar_value = substring(@price, 2, 2) | #dollar_value = “10” |
right(str cadena, int num_caracteres)
Extrae una porción de texto del final de una cadena.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@price = “USD10.50” | #cent_value = right(@price, 2) | #cent_value = “50” |
textjoin(str delimitador, bool ignorar_vacíos, str cadena [str cadena, expr valor, …])
Combina múltiples valores en una sola cadena con un delimitador entre ellos.
| Ejemplo | Fórmula | Resultado |
|---|
Un registro de evento tiene los siguientes atributos: - @city = “Paris” - @country = “France” | #region = textjoin(", ", "false", @city, @country) | #region = “Paris, France” |
upper(str string)
Convierte una cadena a mayúsculas.
| Ejemplo | Fórmula | Resultado |
|---|
Un registro de evento tiene el siguiente atributo: @first_name = “Bob” | #upper_name = upper(@first_name) | #upper_name = “BOB” |
Lógico
if(expr condición, expr si_verdadero, expr si_falso)
Evalúa una condición y devuelve un valor en consecuencia.
| Ejemplo | Fórmula | Resultado |
|---|
Un registro de evento tiene los siguientes atributos: - @location = “París, Francia” - @home = “Nueva York, EE. UU.” | #abroad = if(@location == @home, "false", "true") | #abroad = “true” |
is_null(expr valor)
Comprueba si un atributo o expresión es nulo.
| Ejemplo | Fórmula | Resultado |
|---|
Un registro de evento tiene los siguientes atributos: - @users_online = 5 - @max_capacity = 0 | is_null(@users_online / @max_capacity) | “true” |
Regex
Las funciones de Regex coinciden o transforman un valor usando una expresión regular (regex). Los patrones admiten las mismas construcciones de regex que la extracción de regex, como literales, clases de caracteres y cuantificadores. El escape es diferente: un patrón de extracción es un campo simple, mientras que un patrón aquí es un argumento de cadena entre comillas dobles. A diferencia de la extracción, los grupos de captura aquí no necesitan un nombre: regexp_replace puede hacer referencia a un grupo sin nombre posicionalmente con $1 a $9. Se aplica la misma guía de rendimiento de patrones.
regexp_like(str valor, str patrón)
Devuelve true cuando el patrón coincide en cualquier parte del valor, y false en caso contrario.
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
message = “conexión timeout after 30s” | #is_timeout = regexp_like(message, "timeout|deadline exceeded") | #is_timeout = “true” |
regexp_replace(str entrada, str patrón, str reemplazo, [int inicio, int N])
Devuelve input con el texto coincidente reemplazado. Use $1 a $9 en replacement para insertar la coincidencia de un grupo de captura, o ${name} para un grupo con nombre. Los argumentos de la fórmula son literales de cadena entre comillas dobles, por lo que debe escapar las barras invertidas. Por ejemplo, escriba "\\d" en lugar de "\d" para clases abreviadas en pattern. Para insertar un $ literal en replacement, escape su significado especial con \$, luego escape esa barra invertida para el literal de cadena: "\\$".
| Argumento | Significado |
|---|
input | El texto que se va a transformar |
pattern | El patrón de expresión regular que se va a buscar |
replacement | El patrón de transformación de expresión regular, que a menudo utiliza grupos de captura |
start | Opcional. El índice de caracteres basado en cero desde el cual comenzar la búsqueda. Se establece de forma predeterminada en 0 |
N | Opcional. El número máximo de coincidencias que se reemplazarán. El valor predeterminado es 1. 0 reemplaza cada coincidencia |
| Ejemplo | Fórmula | Resultado |
|---|
Un evento de registro tiene el siguiente atributo:
@path = “/api/v1/orders” | #resource = regexp_replace(@path, "^/api/v[0-9]+/(.*)$", "$1") | #resource = “orders” |
Lecturas adicionales
Documentación, enlaces y artículos útiles adicionales: