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