DataPrime expressions d'agrégation
Ce guide fournit un glossaire des expressions IBM® Cloud Logs DataPrime que vous pouvez utiliser pour l'agrégation.
any_value
Renvoie toute valeur d'expression non nulle dans le groupe. Si l'expression n'est pas définie, elle prend par défaut l'objet $data.
any_value(expression: any?)
Renvoie null si toutes les valeurs de l'expression dans le groupe sont null.
Exemple :
groupby $m.severity calculate any_value($d.url)
avg
Calcule la valeur moyenne d'une expression numérique dans le groupe.
avg(expression: number)
Exemple :
groupby $m.severity calculate avg($d.duration) as average_duration
count
Compte les valeurs d'expression non nulles. Si l'expression n'est pas définie, toutes les lignes seront comptées.
count(expression: any?) [into <keypath>]
Un alias peut être fourni pour remplacer le chemin d'accès au clavier dans lequel le résultat sera écrit.
Par exemple, la partie suivante d'une requête
count() into $d.num_rows
donnera lieu à une seule ligne de la forme suivante :
{ "num_rows": 7532 }
count_if
Compte les valeurs d'expression non nulles sur les lignes qui satisfont à la condition. Si l'expression n'est pas définie, toutes les lignes qui satisfont à la condition seront comptées.
count_if(condition: bool, expression: any?)
Exemple :
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
Compte les valeurs d'expression distinctes non nulles.
distinct_count(expression: any)
Exemple :
groupby $l.applicationname calculate distinct_count($d.username) as active_users
distinct_count_if
Compte les valeurs d'expression distinctes non nulles sur les lignes qui satisfont à la condition.
distinct_count_if(condition: bool, expression: any)
Exemple :
groupby $l.applicationname calculate distinct_count_if($m.severity == 'Error', $d.username) as users_with_errors
max
Calcule la valeur maximale d'une expression numérique dans le groupe.
max(expression: number | timestamp)
Exemple :
groupby $m.severity calculate max($d.duration)
min
Calcule la valeur minimale d'une expression numérique dans le groupe.
min(expression: number | timestamp)
Exemple :
groupby $m.severity calculate min($d.duration)
percentile
Calcule la valeur approximative du n-ième centile d'une expression numérique dans le groupe.
percentile(percentile: number, expression: number, error_threshold: number?)
Le calcul du percentile étant approximatif, la précision peut être contrôlée à l'aide du paramètre error_threshold qui varie de 0 à 1 (la valeur par défaut est 0.01 ). Une valeur plus faible se traduira par une meilleure précision
au prix d'un temps d'interrogation plus long.
Exemple :
groupby $m.severity calculate percentile(0.99, $d.duration) as p99_latency
sample_stddev
Calcule l'écart-type de l'échantillon d'une expression numérique dans le groupe.
sample_stddev(expression: number)
Exemple :
groupby $m.severity calculate sample_stddev($d.duration)
sample_variance
Calcule la variance d'une expression numérique dans le groupe.
sample_variance(expression: number)
Exemple :
groupby $m.severity calculate sample_variance($d.duration)
stddev
Calcule l'écart-type d'une expression numérique dans le groupe.
stddev(expression: number)
Exemple :
groupby $m.severity calculate stddev($d.duration)
sum
Calcule la somme d'une expression numérique dans le groupe.
sum(expression: number)
Exemple :
groupby $m.severity calculate sum($d.duration) as total_duration
variance
Calcule la variance d'une expression numérique dans le groupe.
variance(expression: number)
Exemple :
groupby $m.severity calculate variance($d.duration)
DataPrime Expressions dans les agrégations
Lorsque vous effectuez une requête avec l'opérateur groupby, vous pouvez appliquer une fonction d'agrégation (telle que asavg, max, sum) au groupe de résultats. Cette fonctionnalité vous permet de manipuler
une expression d'agrégation à l'intérieur de l'expression elle-même, ce qui vous permet de calculer et de manipuler vos données simultanément.
Exemple 1
Cet exemple prend les journaux qui ont des champs connect_duration et batch_duration, et calcule le rapport entre les moyennes de ces durées, par région.
# Query
source logs
| groupby region calculate avg(connect_duration) / avg(batch_duration)
Exemple 2
Cette requête calcule le pourcentage de logs qui n'ont pas de kubernetes_pod_name sur le nombre total de logs. Le calcul est effectué par sous-système.
# Query
source logs
| groupby $l.subsystemname calculate
sum(if(kubernetes.pod_name != null,1,0)) / count() as pct_without_pod_name
Exemple 3
Cette requête calcule le rapport entre le salaire maximum et le salaire minimum par département et fournit une chaîne Based on N Employees comme colonne supplémentaire par ligne.
# Query
source logs
| groupby department_id calculate
max(salary) / min(salary) as salary_ratio
`Based on {count()} Employees`
Exemple 4
Cette requête calcule le ratio entre les journaux d'erreurs et les journaux d'informations.
source logs
| groupby $m.timestamp / 1h as hour calculate
count_if($m.severity == '5') / count_if($m.severity == '3') as error_to_info_ratio