DataPrime 聚合表達式
本指南提供 IBM® Cloud Logs DataPrime 表達式的詞彙表,您可以使用這些表達式進行聚合。
any_value
回傳群組中任何非空的表達值。 如果沒有定義 expression,則預設為 $data 物件。
any_value(expression: any?)
如果組中的所有表達式值都為空,則返回 null。
範例:
groupby $m.severity calculate any_value($d.url)
avg
計算群組中數字表達式的平均值。
avg(expression: number)
範例:
groupby $m.severity calculate avg($d.duration) as average_duration
count
計數非空的表達值。 如果未定義 expression,則會計算所有資料。
count(expression: any?) [into <keypath>]
可以提供別名來覆寫結果要寫入的 keypath。
例如,查詢的以下部分
count() into $d.num_rows
將產生以下形式的單一行:
{ "num_rows": 7532 }
count_if
計算滿足條件的資料列上的非空表述值。 如果未定義表達式,則會計算所有滿足條件的記錄。
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
計數非空的獨特表現值。
distinct_count(expression: any)
範例:
groupby $l.applicationname calculate distinct_count($d.username) as active_users
distinct_count_if
計數滿足條件的資料列上的非空獨立表達值。
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
計算群組中數字表達式的最小值。
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