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