operador summarize

Produz uma tabela que agrega o conteúdo da tabela de entrada.

Syntax

T| summarize [ SummarizeParameters ] [[Column=] Aggregation [, ...]] [by [Column=] GroupExpression [, ...]]

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
Coluna string O nome da coluna de resultados. A predefinição é um nome derivado da expressão.
Agregação string ✔️ Uma chamada para uma função de agregação , como count() ou avg(), com nomes de coluna como argumentos.
GroupExpression escalar ✔️ Uma expressão escalar que pode referenciar os dados de entrada. O resultado terá tantos registos quanto existem valores distintos de todas as expressões de grupo.
SummarizeParameters string Zero ou mais parâmetros separados por espaço sob a forma deValor de Nome= que controlam o comportamento. Veja os parâmetros suportados.

Nota

Quando a tabela de entrada está vazia, o resultado depende se a GroupExpression é utilizada:

  • Se GroupExpression não for fornecido, o resultado será uma única linha (vazia).
  • Se GroupExpression for fornecido, o resultado não terá linhas.

Parâmetros suportados

Nome Descrição
hint.num_partitions Especifica o número de partições utilizadas para partilhar a carga de consulta em nós de cluster. Ver consulta aleatória
hint.shufflekey=<key> A shufflekey consulta partilha o carregamento da consulta em nós de cluster, utilizando uma chave para particionar dados. Ver consulta aleatória
hint.strategy=shuffle A shuffle consulta de estratégia partilha a carga de consulta em nós de cluster, onde cada nó processará uma partição dos dados. Ver consulta aleatória

Devoluções

As linhas de entrada são dispostas em grupos com os mesmos valores das by expressões. Em seguida, as funções de agregação especificadas são calculadas em cada grupo, produzindo uma linha para cada grupo. O resultado contém as by colunas e, pelo menos, uma coluna para cada agregação calculada. (Algumas funções de agregação devolvem múltiplas colunas.)

O resultado tem tantas linhas quanto existem combinações distintas de by valores (que podem ser zero). Se não existirem chaves de grupo fornecidas, o resultado tem um único registo.

Para resumir ao longo de intervalos de valores numéricos, utilize bin() para reduzir intervalos para valores discretos.

Nota

  • Embora possa fornecer expressões arbitrárias para as expressões de agregação e agrupamento, é mais eficiente utilizar nomes de coluna simples ou aplicar bin() a uma coluna numérica.
  • As classes automáticas por hora para colunas datetime já não são suportadas. Em alternativa, utilize a discretização explícita. Por exemplo, summarize by bin(timestamp, 1h).

Valores predefinidos de agregações

A tabela seguinte resume os valores predefinidos das agregações:

Operador Valor predefinido
count(), countif(), dcount(), dcountif(), count_distinct(), sum(), sumif(), variance(), varianceif(), stdev(), stdevif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() matriz dinâmica vazia ([])
Todos os outros nulo

Nota

Ao aplicar estes agregados a entidades que incluem valores nulos, os valores nulos são ignorados e não têm em conta o cálculo. Para obter exemplos, veja Agrega valores predefinidos.

Exemplos

Resumir o preço por fruta e fornecedor.

Combinação exclusiva

A consulta seguinte determina as combinações únicas de State e EventType existem para tempestades que resultaram em ferimentos diretos. Não existem funções de agregação, apenas teclas agrupar por. O resultado apenas mostrará as colunas desses resultados.

StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType

Saída

A tabela seguinte mostra apenas as primeiras 5 linhas. Para ver o resultado completo, execute a consulta.

Estado EventType
TEXAS Vento trovoada
TEXAS Inundação repentina
TEXAS Tempo de Inverno
TEXAS Vento Forte
TEXAS Inundação
... ...

Carimbo de data/hora mínimo e máximo

Encontra as tempestades de chuva mínimas e máximas no Havai. Não existe nenhuma cláusula group-by, pelo que existe apenas uma linha na saída.

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

Saída

Mín. Máx
01:08:00 11:55:00

Contagem distinta

Crie uma linha para cada continente, mostrando uma contagem das cidades em que as atividades ocorrem. Como existem poucos valores para "continente", não é necessária nenhuma função de agrupamento na cláusula "by":

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

Saída

A tabela seguinte mostra apenas as primeiras 5 linhas. Para ver a saída completa, execute a consulta.

Estado TypesOfStorms
TEXAS 27
CALIFÓRNIA 26
Porto 25
GEÓRGIA 24
ILLINOIS 23
... ...

Histograma

O exemplo seguinte calcula os tipos de eventos de tempestade de histograma que tiveram tempestades que duram mais de 1 dia. Como Duration tem muitos valores, utilize bin() para agrupar os respetivos valores em intervalos de 1 dia.

StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length

Saída

EventType Comprimento EventCount
Seca 30.00:00:00 1646
Incêndio florestal 30.00:00:00 11
Calor 30.00:00:00 14
Inundação 30.00:00:00 20
Chuva Intensa 29.00:00:00 42
... ... ...

Agrega valores predefinidos

Quando a entrada do summarize operador tem, pelo menos, uma chave agrupar por vazia, o resultado também está vazio.

Quando a entrada do summarize operador não tem uma chave agrupar por vazia, o resultado são os valores predefinidos dos agregados utilizados em summarize Para obter mais informações, consulte Valores predefinidos de agregações.

datatable(x:long)[]
| summarize any_x=take_any(x), arg_max_x=arg_max(x, *), arg_min_x=arg_min(x, *), avg(x), buildschema(todynamic(tostring(x))), max(x), min(x), percentile(x, 55), hll(x) ,stdev(x), sum(x), sumif(x, x > 0), tdigest(x), variance(x)

Saída

any_x arg_max_x arg_min_x avg_x schema_x max_x min_x percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
NaN 0 0 0 0

O resultado de avg_x(x) deve-se NaN à divisão por 0.

datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)

Saída

count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)

Saída

set_x list_x
[] []

A média agregada soma todos os não nulos e conta apenas aqueles que participaram no cálculo (não terá em conta os nulos).

range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)

Saída

sum_y avg_y
15 5

A contagem regular irá contar valores nulos:

range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)

Saída

count_y
2
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize make_set(y), make_set(y)

Saída

set_y set_y1
[5.0] [5.0]