DataPrime aggregationsausdrücke

Dieser Leitfaden enthält ein Glossar von IBM® Cloud Logs DataPrime Ausdrücken, die Sie für die Aggregation verwenden können.

any_value

Gibt einen beliebigen Ausdruckswert in der Gruppe zurück, der nicht null ist. Wenn expression nicht definiert ist, wird standardmäßig das $data-Objekt verwendet.

any_value(expression: any?)

Gibt null zurück, wenn alle Ausdruckswerte in der Gruppe null sind.

Beispiel:

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

avg

Berechnet den Durchschnittswert eines numerischen Ausdrucks in der Gruppe.

avg(expression: number)

Beispiel:

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

count

Zählt Nicht-Null-Ausdruckswerte. Wenn expression nicht definiert ist, werden alle Zeilen gezählt.

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

Ein Alias kann angegeben werden, um den Tastaturpfad, in den das Ergebnis geschrieben wird, zu überschreiben.

Zum Beispiel der folgende Teil einer Abfrage

count() into $d.num_rows

wird eine einzige Zeile der folgenden Form ergeben:

{ "num_rows": 7532 }

count_if

Zählt Nicht-Null-Ausdruckswerte in Zeilen, die die Bedingung erfüllen. Wenn der Ausdruck nicht definiert ist, werden alle Zeilen, die die Bedingung erfüllen, gezählt.

count_if(condition: bool, expression: any?)

Beispiel:

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

Zählt eindeutige Nicht-Null-Ausdruckswerte.

distinct_count(expression: any)

Beispiel:

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

distinct_count_if

Zählt nicht-null eindeutige Ausdruckswerte in Zeilen, die die Bedingung erfüllen.

distinct_count_if(condition: bool, expression: any)

Beispiel:

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

max

Berechnet den maximalen Wert eines numerischen Ausdrucks in der Gruppe.

max(expression: number | timestamp)

Beispiel:

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

min

Berechnet den Mindestwert eines numerischen Ausdrucks in der Gruppe.

min(expression: number | timestamp)

Beispiel:

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

percentile

Berechnet den ungefähren n-ten Perzentilwert eines numerischen Ausdrucks in der Gruppe.

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

Da es sich bei der Berechnung der Perzentile um eine Näherung handelt, kann die Genauigkeit mit dem Parameter error_threshold gesteuert werden, der zwischen 0 und 1 liegt (Standardwert ist 0.01 ). Ein niedrigerer Wert führt zu einer besseren Genauigkeit auf Kosten einer längeren Abfragezeit.

Beispiel:

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

sample_stddev

Berechnet die Standardabweichung der Stichprobe eines numerischen Ausdrucks in der Gruppe.

sample_stddev(expression: number)

Beispiel:

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

sample_variance

Berechnet die Varianz eines numerischen Ausdrucks in der Gruppe.

sample_variance(expression: number)

Beispiel:

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

stddev

Berechnet die Standardabweichung eines numerischen Ausdrucks in der Gruppe.

stddev(expression: number)

Beispiel:

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

sum

Berechnet die Summe eines numerischen Ausdrucks in der Gruppe.

sum(expression: number)

Beispiel:

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

variance

Berechnet die Varianz eines numerischen Ausdrucks in der Gruppe.

variance(expression: number)

Beispiel:

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

DataPrime Ausdrücke in Aggregationen

Bei der Abfrage mit dem Groupby-Operator können Sie eine Aggregationsfunktion (z. B. asavg, max, sum) auf den Bereich der Ergebnisse anwenden. Diese Funktion gibt Ihnen die Möglichkeit, einen Aggregationsausdruck innerhalb des Ausdrucks selbst zu manipulieren, so dass Sie Ihre Daten gleichzeitig berechnen und manipulieren können.

Beispiel 1

Dieses Beispiel nimmt Protokolle, die einige connect_duration und batch_duration Felder enthalten, und berechnet das Verhältnis zwischen den Durchschnittswerten dieser Dauern, pro Region.

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

Beispiel 2

Diese Abfrage berechnet den prozentualen Anteil der Protokolle, die keine kubernetes_pod_name haben, an der Gesamtzahl der Protokolle. Die Berechnung erfolgt pro Teilsystem.

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

Beispiel 3

Diese Abfrage berechnet das Verhältnis zwischen dem höchsten und dem niedrigsten Gehalt pro Abteilung und liefert eine Based on N Employees Zeichenfolge als zusätzliche Spalte pro Zeile.

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

Beispiel 4

Diese Abfrage berechnet das Verhältnis zwischen Fehlerprotokollen und Informationsprotokollen.

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