As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
comando stats
Use o stats
comando para calcular a agregação a partir do resultado da pesquisa.
nota
Para ver quais integrações AWS de fontes de dados oferecem suporte a esse PPL comando, consulteComandos.
NULL/manipulação de MISSING valores
Função | NULL | MISSING |
---|---|---|
COUNT | Não contado | Não contado |
SUM | Ignorar | Ignorar |
AVG | Ignorar | Ignorar |
MAX | Ignorar | Ignorar |
MIN | Ignorar | Ignorar |
Sintaxe
Use a seguinte sintaxe:
stats <aggregation>... [by-clause]
agregação
-
Obrigatório.
-
Uma função de agregação aplicada a um campo.
cláusula acessória
-
Opcional.
-
Sintaxe:
by [span-expression,] [field,]...
-
Especifica campos e expressões para agrupar os resultados da agregação. A cláusula secundária permite agrupar os resultados da agregação usando campos e expressões. Você pode usar funções escalares, funções de agregação e até mesmo expressões de amplitude para dividir campos específicos em compartimentos de intervalos iguais.
-
Padrão: se não
<by-clause>
for especificado, o comando stats retornará uma única linha representando a agregação em todo o conjunto de resultados.
expressão de extensão
-
Opcional, no máximo um.
-
Sintaxe:
span(field_expr, interval_expr)
-
A unidade da expressão de intervalo é a unidade natural por padrão. Se o campo for do tipo data e hora e o intervalo estiver em unidades de data/hora, você especifica a unidade na expressão do intervalo.
-
Por exemplo, parece que dividir o
age
campo em baldes por 10 anos.span(age, 10)
Para dividir um campo de carimbo de data/hora em intervalos de hora em hora, use.span(timestamp, 1h)
Unidades de intervalo de amplitude |
---|
milissegundo (ms) |
segundo (s) |
minuto (m, diferencia maiúsculas de minúsculas) |
hora (h) |
dia (d) |
semana (w) |
mês (M, diferencia maiúsculas de minúsculas) |
quarto (q) |
ano (y) |
Funções de agregação
COUNT
Retorna uma contagem do número de expr nas linhas recuperadas por uma SELECT instrução.
Exemplo: .
os> source=accounts | stats count(); fetched rows / total rows = 1/1 +-----------+ | count() | |-----------| | 4 | +-----------+
SUM
Use SUM(expr)
para retornar a soma de expr.
Exemplo
os> source=accounts | stats sum(age) by gender; fetched rows / total rows = 2/2 +------------+----------+ | sum(age) | gender | |------------+----------| | 28 | F | | 101 | M | +------------+----------+
AVG
Use AVG(expr)
para retornar o valor médio de expr.
Exemplo
os> source=accounts | stats avg(age) by gender; fetched rows / total rows = 2/2 +--------------------+----------+ | avg(age) | gender | |--------------------+----------| | 28.0 | F | | 33.666666666666664 | M | +--------------------+----------+
MAX
Use MAX(expr)
para retornar o valor máximo de expr.
Exemplo
os> source=accounts | stats max(age); fetched rows / total rows = 1/1 +------------+ | max(age) | |------------| | 36 | +------------+
MIN
Use MIN(expr)
para retornar o valor mínimo de expr.
Exemplo
os> source=accounts | stats min(age); fetched rows / total rows = 1/1 +------------+ | min(age) | |------------| | 28 | +------------+
STDDEV_SAMP
Use STDDEV_SAMP(expr)
para retornar o desvio padrão da amostra de expr.
Exemplo: .
os> source=accounts | stats stddev_samp(age); fetched rows / total rows = 1/1 +--------------------+ | stddev_samp(age) | |--------------------| | 3.304037933599835 | +--------------------+
STDDEV_POP
Use STDDEV_POP(expr)
para retornar o desvio padrão da população de expr.
Exemplo: .
os> source=accounts | stats stddev_pop(age); fetched rows / total rows = 1/1 +--------------------+ | stddev_pop(age) | |--------------------| | 2.**************** | +--------------------+
TAKE
Use TAKE(field [, size])
para retornar os valores originais de um campo. Não garante a ordem dos valores.
Campo
-
Obrigatório.
-
O campo deve ser um campo de texto.
tamanho
-
Opcional inteiro.
-
O número de valores deve ser retornado.
-
O padrão é 10.
Exemplo
os> source=accounts | stats take(firstname); fetched rows / total rows = 1/1 +-----------------------------+ | take(firstname) | |-----------------------------| | [Jane, Mary, Nikki, Juan | +-----------------------------+
PERCENTILEou PERCENTILE _ APPROX
Use PERCENTILE(expr, percent)
ou PERCENTILE_APPROX(expr, percent)
para retornar o valor aproximado do percentil de expr na porcentagem especificada.
percentual
-
O número deve ser uma constante entre 0 e 100.
Exemplo
os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
Exemplo 1: Calcular a contagem de eventos
O exemplo mostra como calcular a contagem de eventos nas contas.
os> source=accounts | stats count(); fetched rows / total rows = 1/1 +-----------+ | count() | |-----------| | 4 | +-----------+
Exemplo 2: Calcular a média de um campo
O exemplo mostra como calcular a idade média de todas as contas.
os> source=accounts | stats avg(age); fetched rows / total rows = 1/1 +------------+ | avg(age) | |------------| | 32.25 | +------------+
Exemplo 3: Calcular a média de um campo por grupo
O exemplo mostra como calcular a idade média de todas as contas, agrupadas por sexo.
os> source=accounts | stats avg(age) by gender; fetched rows / total rows = 2/2 +--------------------+----------+ | avg(age) | gender | |--------------------+----------| | 28.0 | F | | 33.666666666666664 | M | +--------------------+----------+
Exemplo 4: Calcular a média, a soma e a contagem de um campo por grupo
O exemplo mostra como calcular a idade média, a soma da idade e a contagem de eventos para todas as contas, agrupadas por sexo.
os> source=accounts | stats avg(age), sum(age), count() by gender; fetched rows / total rows = 2/2 +--------------------+------------+-----------+----------+ | avg(age) | sum(age) | count() | gender | |--------------------+------------+-----------+----------| | 28.0 | 28 | 1 | F | | 33.666666666666664 | 101 | 3 | M | +--------------------+------------+-----------+----------+
Exemplo 5: Calcular o máximo de um campo
O exemplo calcula a idade máxima para todas as contas.
os> source=accounts | stats max(age); fetched rows / total rows = 1/1 +------------+ | max(age) | |------------| | 36 | +------------+
Exemplo 6: Calcular o máximo e o mínimo de um campo por grupo
O exemplo calcula os valores de idade máxima e mínima para todas as contas, agrupados por sexo.
os> source=accounts | stats max(age), min(age) by gender; fetched rows / total rows = 2/2 +------------+------------+----------+ | max(age) | min(age) | gender | |------------+------------+----------| | 28 | 28 | F | | 36 | 32 | M | +------------+------------+----------+
Exemplo 7: Calcular a contagem distinta de um campo
Para obter a contagem de valores distintos de um campo, você pode usar a função DISTINCT_COUNT
(ouDC
) em vez deCOUNT
. O exemplo calcula a contagem e o campo de contagem distinta de gênero de todas as contas.
os> source=accounts | stats count(gender), distinct_count(gender); fetched rows / total rows = 1/1 +-----------------+--------------------------+ | count(gender) | distinct_count(gender) | |-----------------+--------------------------| | 4 | 2 | +-----------------+--------------------------+
Exemplo 8: Calcular a contagem por um intervalo
O exemplo obtém a contagem da idade no intervalo de 10 anos.
os> source=accounts | stats count(age) by span(age, 10) as age_span fetched rows / total rows = 2/2 +--------------+------------+ | count(age) | age_span | |--------------+------------| | 1 | 20 | | 3 | 30 | +--------------+------------+
Exemplo 9: Calcular a contagem por sexo e extensão
Este exemplo conta registros agrupados por sexo e faixa etária de 5 anos.
os> source=accounts | stats count() as cnt by span(age, 5) as age_span, gender fetched rows / total rows = 3/3 +-------+------------+----------+ | cnt | age_span | gender | |-------+------------+----------| | 1 | 25 | F | | 2 | 30 | M | | 1 | 35 | M | +-------+------------+----------+
A expressão span sempre aparece como a primeira chave de agrupamento, independentemente da ordem especificada no comando.
os> source=accounts | stats count() as cnt by gender, span(age, 5) as age_span fetched rows / total rows = 3/3 +-------+------------+----------+ | cnt | age_span | gender | |-------+------------+----------| | 1 | 25 | F | | 2 | 30 | M | | 1 | 35 | M | +-------+------------+----------+
Exemplo 10: Calcule a contagem e obtenha a lista de e-mails por sexo e extensão
O exemplo obtém a contagem da idade no intervalo de 10 anos e o grupo por sexo. Além disso, para cada linha, obtenha uma lista de no máximo 5 e-mails.
os> source=accounts | stats count() as cnt, take(email, 5) by span(age, 5) as age_span, gender fetched rows / total rows = 3/3 +-------+----------------------------------------------------+------------+----------+ | cnt | take(email, 5) | age_span | gender | |-------+----------------------------------------------------+------------+----------| | 1 | [] | 25 | F | | 2 | [janedoe@anycompany.com,juanli@examplecompany.org] | 30 | M | | 1 | [marymajor@examplecorp.com] | 35 | M | +-------+----------------------------------------------------+------------+----------+
Exemplo 11: Calcular o percentil de um campo
O exemplo mostra como calcular o percentil 90º de todas as contas.
os> source=accounts | stats percentile(age, 90); fetched rows / total rows = 1/1 +-----------------------+ | percentile(age, 90) | |-----------------------| | 36 | +-----------------------+
Exemplo 12: Calcular o percentil de um campo por grupo
O exemplo mostra como calcular o percentil 90º de todas as contas agrupadas por sexo.
os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
Exemplo 13: Calcule o percentil por sexo e extensão
O exemplo obtém o percentil 90ª idade no intervalo de 10 anos e o grupo por sexo.
os> source=accounts | stats percentile(age, 90) as p90 by span(age, 10) as age_span, gender fetched rows / total rows = 2/2 +-------+------------+----------+ | p90 | age_span | gender | |-------+------------+----------| | 28 | 20 | F | | 36 | 30 | M | +-------+------------+----------+
- `source = table | stats avg(a) ` - `source = table | where a < 50 | stats avg(c) ` - `source = table | stats max(c) by b` - `source = table | stats count(c) by b | head 5` - `source = table | stats distinct_count(c)` - `source = table | stats stddev_samp(c)` - `source = table | stats stddev_pop(c)` - `source = table | stats percentile(c, 90)` - `source = table | stats percentile_approx(c, 99)`
Agregações com amplitude
- `source = table | stats count(a) by span(a, 10) as a_span` - `source = table | stats sum(age) by span(age, 5) as age_span | head 2` - `source = table | stats avg(age) by span(age, 20) as age_span, country | sort - age_span | head 2`
Agregações com intervalo de janela de tempo (função de janela giratória)
- `source = table | stats sum(productsAmount) by span(transactionDate, 1d) as age_date | sort age_date` - `source = table | stats sum(productsAmount) by span(transactionDate, 1w) as age_date, productId`
Agrupamento de agregações por vários níveis
- `source = table | stats avg(age) as avg_state_age by country, state | stats avg(avg_state_age) as avg_country_age by country` - `source = table | stats avg(age) as avg_city_age by country, state, city | eval new_avg_city_age = avg_city_age - 1 | stats avg(new_avg_city_age) as avg_state_age by country, state | where avg_state_age > 18 | stats avg(avg_state_age) as avg_adult_country_age by country`