DataPrime 集計式

このガイドでは、 IBM® Cloud Logs DataPrime 集計に使用できる式の用語集を提供します。

any_value

グループ内の NULL 以外の式値を返します。 expressionが定義されていない場合、デフォルトは$dataオブジェクトになります。

any_value(expression: any?)

グループ内のすべての式値がNULLの場合、NULLを返します。

例:

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

avg

グループ内の数値式の平均値を計算します。

avg(expression: number)

例:

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

count

非 NULL 表現値を数えます。 式が定義されていない場合は、すべての行がカウントされる。

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

結果が書き込まれるキーパスを上書きするために、エイリアスを指定することができる。

例えば、次のようなクエリがあります

count() into $d.num_rows

は、次のような形式の1行になる:

{ "num_rows": 7532 }

count_if

条件を満たす行の非NULL式の値を数えます。 式が定義されていない場合、条件を満たすすべての行がカウントされる。

count_if(condition: bool, expression: any?)

例:

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

NULL ではない明瞭な表現値を数えます。

distinct_count(expression: any)

例:

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

distinct_count_if

条件を満たす行について、非NULLの明確な式の値をカウントする。

distinct_count_if(condition: bool, expression: any)

例:

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

max

グループ内の数値式の最大値を計算します。

max(expression: number | timestamp)

例:

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

min

Calculation関数は、グループ内の数値式の最小値を計算します。

min(expression: number | timestamp)

例:

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

percentile

グループ内の数値式のおおよそのn番目のパーセンタイル値を計算します。

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

パーセンタイルの計算は近似値であるため、 error_threshold パラメータで精度を制御することができます。このパラメータは 0 から 1 の範囲です(デフォルトは 0.01 )。 値が低いほど精度が高くなるが、その代償としてクエリー時間が長くなる。

例:

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

sample_stddev

グループ内の数値式の標本標準偏差を計算します。

sample_stddev(expression: number)

例:

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

sample_variance

グループ内の数値式の分散を計算します。

sample_variance(expression: number)

例:

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

stddev

グループ内の数値式の標準偏差を計算します。

stddev(expression: number)

例:

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

sum

グループ内の数値式の和を計算します。

sum(expression: number)

例:

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

variance

グループ内の数値式の分散を計算します。

variance(expression: number)

例:

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

DataPrime 集約における表現

groupby 演算子を使ったクエリでは、結果のバケツに集約関数 ( asavg, max, sum) を適用することができます。 この機能により、式自体の内部で集計式を操作できるようになり、データの計算と操作を同時に行うことができる。

例 1

この例では、 connect_durationbatch_duration フィールドを持つログを取り、地域ごとに、それらの持続時間の平均の比率を計算する。

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

例 2

このクエリは、ログの総数のうち、 kubernetes_pod_name を持たないログのパーセンテージを計算する。 計算はサブシステムごとに行われる。

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

例 3

このクエリは、部署ごとの最高給与額と最低給与額の比率を計算し、行ごとの追加カラムとして Based on N Employees 文字列を提供します。

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

例 4

このクエリは、エラーログと情報ログの比率を計算する。

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