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