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ónSintaxis y notación
Atributo o etiqueta reservada con nombre tagtag (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 yfunc(x, y)
Operador
Por ejemplo, un operador binario * con operandos x y y.
x*y

Operadores

Los operadores disponibles en orden de precedencia:

OperadorDescripció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
&&, ANDAND lógico
||, OROR 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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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.

EjemploFórmulaResultado
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: "\\$".

ArgumentoSignificado
inputEl texto que se va a transformar
patternEl patrón de expresión regular que se va a buscar
replacementEl patrón de transformación de expresión regular, que a menudo utiliza grupos de captura
startOpcional. El índice de caracteres basado en cero desde el cual comenzar la búsqueda. Se establece de forma predeterminada en 0
NOpcional. El número máximo de coincidencias que se reemplazarán. El valor predeterminado es 1. 0 reemplaza cada coincidencia
EjemploFórmulaResultado
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: