Partilhar via


Operador de resumo

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Sintaxe

T| summarize [ SummarizeParameters ] [[Coluna=] Agregação [, ...]] [by [Coluna=] GroupExpression [, ...]]

Saiba mais sobre convenções de sintaxe.

Parâmetros

Designação Tipo Necessário Descrição
Coluna string O nome da coluna de resultados. O padrã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 colunas como argumentos.
GroupExpression escalar ✔️ Uma expressão escalar que pode fazer referência aos dados de entrada. A saída terá tantos registros quantos forem valores distintos de todas as expressões do grupo.
SummarizeParameters string Zero ou mais parâmetros separados por espaço na forma de Nome=Valor que controlam o comportamento. Consulte parâmetros suportados.

Observação

Quando a tabela de entrada está vazia, a saída depende se GroupExpression é usada:

  • Se GroupExpression não for fornecida, a saída será uma única linha (vazia).
  • Se GroupExpression for fornecida, a saída não terá linhas.

Parâmetros suportados

Designação Descrição
hint.num_partitions Especifica o número de partições usadas para compartilhar a carga de consulta em nós de cluster. Consulte consulta aleatória
hint.shufflekey=<key> A consulta shufflekey compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. Consulte consulta aleatória
hint.strategy=shuffle A consulta de estratégia shuffle compartilha a carga de consulta em nós de cluster, onde cada nó processará uma partição dos dados. Consulte consulta aleatória

Devoluções

As linhas de entrada são organizadas em grupos com os mesmos valores das expressões by. Em seguida, as funções de agregação especificadas são calculadas sobre cada grupo, produzindo uma linha para cada grupo. O resultado contém as by colunas e também pelo menos uma coluna para cada agregado calculado. (Algumas funções de agregação retornam várias colunas.)

O resultado tem tantas linhas quantas as combinações distintas de valores de by (que podem ser zero). Se não houver chaves de grupo fornecidas, o resultado terá um único registro.

Para resumir sobre intervalos de valores numéricos, use bin() para reduzir intervalos para valores discretos.

Observação

  • Embora você possa fornecer expressões arbitrárias para as expressões de agregação e agrupamento, é mais eficiente usar nomes de colunas simples ou aplicábin() a uma coluna numérica.
  • Os compartimentos automáticos por hora para colunas datetime não são mais suportados. Em vez disso, use a vinculação explícita. Por exemplo, summarize by bin(timestamp, 1h).

Valores padrão de agregações

A tabela a seguir resume os valores padrão das agregações:

Operador Valor padrão
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

Observação

Ao aplicar essas agregações a entidades que incluem valores nulos, os valores nulos são ignorados e não são considerados no cálculo. Para obter exemplos, consulte Agrega valores padrão.

Exemplos

O exemplo nesta seção mostra como usar a sintaxe para ajudá-lo a começar.

Os exemplos neste artigo usam tabelas disponíveis publicamente no de cluster de ajuda, como a tabela StormEvents no banco de dados Samples.

Os exemplos neste artigo usam tabelas disponíveis publicamente, como a tabela StormEvents na análise do tempo dados de exemplo.

Resumir preço por fruta e fornecedor.

Combinação única

A consulta a seguir determina quais combinações exclusivas de State e EventType existem para tempestades que resultaram em ferimentos diretos. Não há funções de agregação, apenas teclas agrupadas. A saída mostrará apenas as colunas para esses resultados.

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

Output

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

Estado Tipo de Evento
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 o mínimo e o máximo de tempestades fortes no Havaí. Não há cláusula de agrupamento por, portanto, há 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)

Output

Min Máximo
01:08:00 11:55:00

Contagem distinta

A consulta a seguir calcula o número de tipos de eventos de tempestade exclusivos para cada estado e classifica os resultados pelo número de tipos de tempestade exclusivos:

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

Output

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

Estado TiposdeTempestades
TEXAS 27
CALIFÓRNIA 26
PENSILVÂNIA 25
GEÓRGIA 24
ILLINOIS 23
... ...

Histograma

O exemplo a seguir calcula um histograma tipos de evento de tempestade que tiveram tempestades durando mais de 1 dia. Como Duration tem muitos valores, use bin() para agrupar seus 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

Output

Tipo de Evento 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 forte 29.00:00:00 42
... ... ...

Agrega valores padrão

Quando a entrada de summarize operador tem pelo menos uma chave agrupada vazia, seu resultado também está vazio.

Quando a entrada de summarize operador não tem uma chave agrupada vazia, o resultado são os valores padrão das agregações usadas no summarize Para obter mais informações, consulte Valores padrão 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)

Output

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) é NaN devido à divisão por 0.

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

Output

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

Output

set_x list_x
[] []

A média agregada soma todos os não-nulos e conta apenas aqueles que participaram do cálculo (não levará 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)

Output

sum_y avg_y
15 5

A contagem regular contará nulos:

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

Output

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)

Output

set_y set_y1
[5.0] [5.0]