Lenguaje de expresión de campos calculados

Sintaxis básica y constructos lingüísticos

ConstructoSintaxis y notación
Atributo reservado o etiqueta denominada tagtag (no requiere prefijo)
Atributo denominado attr@attr (utiliza un prefijo @ )
Campo calculado denominado field#field (utiliza el prefijo # )
Cadena literal (comillas)
Por ejemplo, text o Quoted "text".
"text"
"Quoted \"text\""
( Se aplica la sintaxis de búsqueda de logs)
Literal numérico (número)
Por ejemplo, ten.
10
Función denominada func con los parámetros x y yfunc(x, y)
Operador
Por ejemplo, un operador binario * con operandos x y y.
x*y

Operadores

Los operadores disponibles por orden de precedencia:

OperadorDescripción
()Una agrupación o llamada de 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
||, `OOR lógico

Funciones

Las funciones disponibles se clasifican de la siguiente manera:

Aritmética

abs(num value)

Devuelve el valor absoluto de un número.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene los siguientes atributos:
- @client_latency = 2
- @server_latency = 3
#discrepancy = abs(@client_latency - @server_latency)#discrepancy = 1

ceil(num value)

Redondea el número al entero más próximo.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@value = 2.2
#rounded_up = ceil(@value)#rounded_up = 3

floor(num value)

Redondea el número al entero más próximo.

Ejemplo
EjemploFórmulaResultado
Un evento de log 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
EjemploFórmulaResultado
Un evento de log 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
EjemploFórmulaResultado
Un evento de log 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, define cuántos decimales mantener.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@value = -1234.01
#rounded_to_tens = round(@value, -1)#rounded_to_tens = -1230

Cadena

concat(str string [str string, expr value, ...])

Combina varios valores en una sola cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene los siguientes atributos:
- @city = “Paris”
- @country = “France”
#region = concat(@city, ", ", @country)#region = “Paris, France”

lower(str string)

Convierte la cadena a minúsculas.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@first_name = “Bob”
#lower_name = lower(@first_name)#lower_name = “bob”

left(str string, int num_chars)

Extrae un fragmento de texto del principio de una cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@price = “USD10.50”
#currency = left(@price, 3)#currency = “USD”

proper(str string)

Convierte la cadena a mayúsculas o minúsculas.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@address = “123 main st”
#formatted_address = proper(@address)#formatted_address = “123 Main St”

split_before(str string, str separator, int occurrence)

Extrae el fragmento de texto que precede a un determinado patrón en una cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log 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 string, str separator, int occurrence)

Extrae el fragmento de texto que sigue un determinado patrón en una cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log 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 string, int start, int length)

Extrae un fragmento de texto del centro de una cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@price = “USD10.50”
#dollar_value = substring(@price, 2, 2)#dollar_value = “10”

right(str string, int num_chars)

Extrae un fragmento de texto del final de una cadena.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo:
@price = “USD10.50”
#cent_value = right(@price, 2)#cent_value = “50”

textjoin(str delimiter, bool ignore_empty, str string [str string, expr value, ...])

Combina varios valores en una sola cadena con un delimitador intermedio.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene los siguientes atributos:
- @city = “Paris”
- @country = “France”
#region = textjoin(", ", "false", @city, @country)#region = “Paris, France”

upper(str string)

Convierte la cadena a mayúsculas.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene el siguiente atributo: @first_name = “Bob”#upper_name = upper(@first_name)#upper_name = “BOB”

Lógico

if(expr condition, expr if_true, expr if_false)

Evalúa una condición y devuelve un valor en consecuencia.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene los siguientes atributos:
- @location = “Paris, France”
- @home = “New York, USA”
#abroad = if(@location == @home, "false", "true")#abroad = “true”

is_null(expr value)

Comprueba si un atributo o expresión es nulo.

Ejemplo
EjemploFórmulaResultado
Un evento de log tiene los siguientes atributos:
- @users_online = 5
- @max_capacity = 0
is_null(@users_online / @max_capacity)“true”

Referencias adicionales

Más enlaces, artículos y documentación útiles: