Lenguaje de expresión de campos calculados
Sintaxis básica y constructos lingüísticos
| Constructo | Sintaxis y notación | 
|---|
Atributo reservado o etiqueta denominada tag | tag (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 y | func(x, y) | 
Operador Por ejemplo, un operador binario * con operandos x y y. | x*y | 
Operadores
Los operadores disponibles por orden de precedencia:
| Operador | Descripció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 | 
&&, AND | AND lógico | 
||, `O | OR 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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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
| Ejemplo | Fórmula | Resultado | 
|---|
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: