DataPrime expresiones de agregación

Esta guía proporciona un glosario de expresiones IBM® Cloud Logs DataPrime que puede utilizar para la agregación.

any_value

Devuelve cualquier valor de expresión no nulo del grupo. Si no se define la expresión, se utiliza por defecto el objeto $data.

any_value(expression: any?)

Devuelve null si todos los valores de expresión del grupo son null.

Ejemplo:

groupby $m.severity calculate any_value($d.url)

avg

Calcula el valor medio de una expresión numérica del grupo.

avg(expression: number)

Ejemplo:

groupby $m.severity calculate avg($d.duration) as average_duration

count

Cuenta los valores de expresión no nulos. Si no se define la expresión, se contarán todas las filas.

count(expression: any?) [into <keypath>]

Se puede proporcionar un alias para anular la ruta del teclado en la que se escribirá el resultado.

Por ejemplo, la siguiente parte de una consulta

count() into $d.num_rows

dará como resultado una única fila de la siguiente forma:

{ "num_rows": 7532 }

count_if

Cuenta los valores de expresión no nulos en las filas que cumplen la condición. Si no se define la expresión, se contarán todas las filas que cumplan la condición.

count_if(condition: bool, expression: any?)

Ejemplo:

groupby $m.severity calculate count_if($d.duration > 500) as $d.high_duration_logs
groupby $m.severity calculate count_if($d.duration > 500, $d.company_id) as $d.high_duration_logs

distinct_count

Cuenta los valores de expresión distintos no nulos.

distinct_count(expression: any)

Ejemplo:

groupby $l.applicationname calculate distinct_count($d.username) as active_users

distinct_count_if

Cuenta los valores de expresión distintos no nulos en las filas que cumplen la condición.

distinct_count_if(condition: bool, expression: any)

Ejemplo:

groupby $l.applicationname calculate distinct_count_if($m.severity == 'Error', $d.username) as users_with_errors

max

Calcula el valor máximo de una expresión numérica del grupo.

max(expression: number | timestamp)

Ejemplo:

groupby $m.severity calculate max($d.duration)

min

Calcula el valor mínimo de una expresión numérica del grupo.

min(expression: number | timestamp)

Ejemplo:

groupby $m.severity calculate min($d.duration)

percentile

Calcula el valor aproximado del percentil n-ésimo de una expresión numérica del grupo.

percentile(percentile: number, expression: number, error_threshold: number?)

Dado que el cálculo del percentil es aproximado, la precisión puede controlarse con el parámetro error_threshold que oscila entre 0 y 1 (por defecto 0.01 ). Un valor más bajo dará como resultado una mayor precisión a costa de tiempos de consulta más largos.

Ejemplo:

groupby $m.severity calculate percentile(0.99, $d.duration) as p99_latency

sample_stddev

Calcula la desviación típica muestral de una expresión numérica del grupo.

sample_stddev(expression: number)

Ejemplo:

groupby $m.severity calculate sample_stddev($d.duration)

sample_variance

Calcula la varianza de una expresión numérica en el grupo.

sample_variance(expression: number)

Ejemplo:

groupby $m.severity calculate sample_variance($d.duration)

stddev

Calcula la desviación típica de una expresión numérica del grupo.

stddev(expression: number)

Ejemplo:

groupby $m.severity calculate stddev($d.duration)

sum

Calcula la suma de una expresión numérica del grupo.

sum(expression: number)

Ejemplo:

groupby $m.severity calculate sum($d.duration) as total_duration

variance

Calcula la varianza de una expresión numérica en el grupo.

variance(expression: number)

Ejemplo:

groupby $m.severity calculate variance($d.duration)

DataPrime Expresiones en agregaciones

Al consultar con el operador groupby, puede aplicar una función de agregación (como asavg, max, sum) al cubo de resultados. Esta función permite manipular una expresión de agregación dentro de la propia expresión, lo que permite calcular y manipular los datos simultáneamente.

Ejemplo 1

Este ejemplo toma registros que tienen algunos campos connect_duration y batch_duration, y calcula la relación entre los promedios de esas duraciones, por región.

# Query
source logs
  | groupby region calculate avg(connect_duration) / avg(batch_duration)

Ejemplo 2

Esta consulta calcula el porcentaje de registros que no tienen un kubernetes_pod_name del número total de registros. El cálculo se realiza por subsistema.

# Query
source logs
| groupby $l.subsystemname calculate
  sum(if(kubernetes.pod_name != null,1,0)) / count() as pct_without_pod_name

Ejemplo 3

Esta consulta calcula la relación entre el salario máximo y mínimo por departamento, y proporciona una cadena Based on N Employees como columna adicional por fila.

# Query
source logs
| groupby department_id calculate
    max(salary) / min(salary) as salary_ratio
    `Based on {count()} Employees`

Ejemplo 4

Esta consulta calcula la relación entre los registros de errores y los registros de información.

source logs
| groupby $m.timestamp / 1h as hour calculate
    count_if($m.severity == '5') / count_if($m.severity == '3') as error_to_info_ratio