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