DataPrime espressioni di aggregazione

Questa guida fornisce un glossario delle espressioni di IBM® Cloud Logs DataPrime che possono essere utilizzate per l'aggregazione.

any_value

Restituisce qualsiasi valore di espressione non nullo nel gruppo. Se l'espressione non è definita, l'impostazione predefinita è l'oggetto $data.

any_value(expression: any?)

Restituisce null se tutti i valori dell'espressione nel gruppo sono nulli.

Esempio:

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

avg

Calcola il valore medio di un'espressione numerica nel gruppo.

avg(expression: number)

Esempio:

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

count

Conta i valori di espressione non nulli. Se l'espressione non è definita, verranno contate tutte le righe.

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

È possibile fornire un alias per sovrascrivere il percorso chiave in cui verrà scritto il risultato.

Ad esempio, la seguente parte di una query

count() into $d.num_rows

risulterà una singola riga della forma seguente:

{ "num_rows": 7532 }

count_if

Conta i valori non nulli delle espressioni sulle righe che soddisfano la condizione. Se l'espressione non è definita, verranno conteggiate tutte le righe che soddisfano la condizione.

count_if(condition: bool, expression: any?)

Esempio:

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

Conta i valori di espressione distinti non nulli.

distinct_count(expression: any)

Esempio:

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

distinct_count_if

Conta i valori di espressione distinti non nulli sulle righe che soddisfano la condizione.

distinct_count_if(condition: bool, expression: any)

Esempio:

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

max

Calcola il valore massimo di un'espressione numerica nel gruppo.

max(expression: number | timestamp)

Esempio:

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

min

Calcola il valore minimo di un'espressione numerica nel gruppo.

min(expression: number | timestamp)

Esempio:

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

percentile

Calcola il valore approssimativo dell'n-esimo percentile di un'espressione numerica nel gruppo.

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

Poiché il calcolo dei percentili è approssimativo, l'accuratezza può essere controllata con il parametro error_threshold che varia da 0 a 1 (valore predefinito 0.01 ). Un valore più basso garantisce una maggiore accuratezza al costo di tempi di interrogazione più lunghi.

Esempio:

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

sample_stddev

Calcola la deviazione standard campionaria di un'espressione numerica nel gruppo.

sample_stddev(expression: number)

Esempio:

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

sample_variance

Calcola la varianza di un'espressione numerica nel gruppo.

sample_variance(expression: number)

Esempio:

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

stddev

Calcola la deviazione standard di un'espressione numerica nel gruppo.

stddev(expression: number)

Esempio:

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

sum

Calcola la somma di un'espressione numerica nel gruppo.

sum(expression: number)

Esempio:

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

variance

Calcola la varianza di un'espressione numerica nel gruppo.

variance(expression: number)

Esempio:

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

DataPrime Espressioni nelle aggregazioni

Quando si esegue una query con l'operatore groupby, è possibile applicare una funzione di aggregazione (ad esempio asavg, max, sum) al gruppo di risultati. Questa funzione consente di manipolare un'espressione di aggregazione all'interno dell'espressione stessa, permettendo di calcolare e manipolare i dati contemporaneamente.

Esempio 1

Questo esempio prende i registri che hanno alcuni campi connect_duration e batch_duration e calcola il rapporto tra le medie di queste durate, per regione.

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

Esempio 2

Questa query calcola la percentuale di registri che non hanno un kubernetes_pod_name sul numero totale di registri. Il calcolo viene effettuato per sottosistema.

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

Esempio 3

Questa query calcola il rapporto tra il salario massimo e quello minimo per reparto e fornisce una stringa Based on N Employees come colonna aggiuntiva per ogni riga.

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

Esempio 4

Questa query calcola il rapporto tra i registri degli errori e i registri delle informazioni.

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