DataPrime expressões de agregação
Este guia fornece um glossário de expressões IBM® Cloud Logs DataPrime que você pode usar para agregação.
any_value
Retorna qualquer valor de expressão não nulo no grupo. Se a expressão não for definida, o padrão será o objeto $data.
any_value(expression: any?)
Retorna nulo se todos os valores de expressão no grupo forem nulos.
Exemplo:
groupby $m.severity calculate any_value($d.url)
avg
Calcula o valor médio de uma expressão numérica no grupo.
avg(expression: number)
Exemplo:
groupby $m.severity calculate avg($d.duration) as average_duration
count
Conta valores de expressão não nulos. Se a expressão não for definida, todas as linhas serão contadas.
count(expression: any?) [into <keypath>]
Um alias pode ser fornecido para substituir o caminho de chave no qual o resultado será gravado.
Por exemplo, a seguinte parte de uma consulta
count() into $d.num_rows
resultará em uma única linha com o seguinte formato:
{ "num_rows": 7532 }
count_if
Conta valores de expressão não nulos em linhas que satisfazem a condição. Se a expressão não for definida, todas as linhas que satisfazem a condição serão contadas.
count_if(condition: bool, expression: any?)
Exemplo:
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
Conta valores de expressão distintos não nulos.
distinct_count(expression: any)
Exemplo:
groupby $l.applicationname calculate distinct_count($d.username) as active_users
distinct_count_if
Conta valores de expressões distintas não nulas em linhas que satisfazem a condição.
distinct_count_if(condition: bool, expression: any)
Exemplo:
groupby $l.applicationname calculate distinct_count_if($m.severity == 'Error', $d.username) as users_with_errors
max
Calcula o valor máximo de uma expressão numérica no grupo.
max(expression: number | timestamp)
Exemplo:
groupby $m.severity calculate max($d.duration)
min
Calcula o valor mínimo de uma expressão numérica no grupo.
min(expression: number | timestamp)
Exemplo:
groupby $m.severity calculate min($d.duration)
percentile
Calcula o valor aproximado do n-ésimo percentil de uma expressão numérica no grupo.
percentile(percentile: number, expression: number, error_threshold: number?)
Como o cálculo do percentil é aproximado, a precisão pode ser controlada com o parâmetro error_threshold que varia de 0 a 1 (o padrão é 0.01 ). Um valor mais baixo resultará em melhor precisão ao custo de tempos de consulta mais
longos.
Exemplo:
groupby $m.severity calculate percentile(0.99, $d.duration) as p99_latency
sample_stddev
Calcula o desvio padrão da amostra de uma expressão numérica no grupo.
sample_stddev(expression: number)
Exemplo:
groupby $m.severity calculate sample_stddev($d.duration)
sample_variance
Calcula a variância de uma expressão numérica no grupo.
sample_variance(expression: number)
Exemplo:
groupby $m.severity calculate sample_variance($d.duration)
stddev
Calcula o desvio padrão de uma expressão numérica no grupo.
stddev(expression: number)
Exemplo:
groupby $m.severity calculate stddev($d.duration)
sum
Calcula a soma de uma expressão numérica no grupo.
sum(expression: number)
Exemplo:
groupby $m.severity calculate sum($d.duration) as total_duration
variance
Calcula a variância de uma expressão numérica no grupo.
variance(expression: number)
Exemplo:
groupby $m.severity calculate variance($d.duration)
DataPrime Expressões em agregações
Ao consultar com o operador groupby, você pode aplicar uma função de agregação (como asavg, max, sum) ao grupo de resultados. Esse recurso permite que você manipule uma expressão de agregação dentro da
própria expressão, o que possibilita calcular e manipular os dados simultaneamente.
Exemplo 1
Esse exemplo usa registros que têm alguns campos connect_duration e batch_duration e calcula a proporção entre as médias dessas durações, por região.
# Query
source logs
| groupby region calculate avg(connect_duration) / avg(batch_duration)
Exemplo 2
Essa consulta calcula a porcentagem de registros que não têm um kubernetes_pod_name em relação ao número total de registros. O cálculo é feito por subsistema.
# Query
source logs
| groupby $l.subsystemname calculate
sum(if(kubernetes.pod_name != null,1,0)) / count() as pct_without_pod_name
Exemplo 3
Essa consulta calcula a proporção entre o salário máximo e o mínimo por departamento e fornece uma cadeia de caracteres Based on N Employees como uma coluna adicional por linha.
# Query
source logs
| groupby department_id calculate
max(salary) / min(salary) as salary_ratio
`Based on {count()} Employees`
Exemplo 4
Essa consulta calcula a proporção entre os registros de erros e os registros de informações.
source logs
| groupby $m.timestamp / 1h as hour calculate
count_if($m.severity == '5') / count_if($m.severity == '3') as error_to_info_ratio