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_duration と batch_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