Compartilhar via


operador summarize

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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

Sintaxe

T [ SummarizeParameters=

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
Coluna string O nome da coluna de resultado. Assume o padrão de 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 fazer referência aos dados de entrada. A saída tem tantos registros quanto valores distintos de todas as expressões de grupo.
SummarizeParameters string Zero ou mais parâmetros separados por espaço na forma de Valor de Nome = que controlam o comportamento. Confira os parâmetros com suporte.

Observação

Quando a tabela de entrada está vazia, a saída depende do uso de GroupExpression:

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

Parâmetros com suporte

Nome Descrição
hint.num_partitions Especifica o número de partições usadas para compartilhar a carga de consulta em nós de cluster. Confira a 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. Confira a consulta aleatória
hint.strategy=shuffle A consulta de estratégia shuffle compartilha a carga de consulta em nós de cluster, em que cada nó processará uma partição dos dados. Confira a consulta aleatória

Retornos

As linhas de entrada são organizadas em grupos com os mesmos valores que as 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 colunas by e pelo menos uma coluna para cada agregação calculada. (Algumas funções de agregação retornam várias colunas.)

O resultado tem tantas linhas quanto combinações distintas de by valores (que podem ser zero). Se nenhuma chave de grupo for fornecida, o resultado terá um único registro.

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

Observação

  • Embora você possa fornecer expressões aleatórias para as expressões de agregação e de agrupamento, é mais eficiente usar nomes de coluna simples ou aplicar bin() a uma coluna numérica.
  • As lixeiras automáticas por hora para colunas datetime não têm mais suporte. Em vez disso, use a compartimentalização explícita. Por exemplo, summarize by bin(timestamp, 1h).

Valores padrão das agregações

A seguinte tabela 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. Veja exemplos.

Exemplos

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

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

O exemplo a seguir determina de State quais combinações exclusivas e EventType há para tempestades que resultaram em lesões diretas. Não há funções de agregação, apenas chaves de agrupamento. A saída exibe apenas as colunas desses resultados.

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

Saída

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

Estado Tipo de Evento
TEXAS Ventos de tempestade
TEXAS Saturação de Flash
TEXAS Clima de Inverno
TEXAS Vento Forte
TEXAS Saturação
... ...

O exemplo a seguir encontra as tempestades mínimas e máximas de chuva forte no Havaí. Não há nenhuma cláusula group-by, ou seja, 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)

Saída

Mín Max
01:08:00 11:55:00

O exemplo a seguir calcula o número de tipos de eventos storm 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

Saída

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

Estado TypesOfStorms
TEXAS 27
CALIFÓRNIA 26
Pensilvânia vinte e cinco
GEÓRGIA 24
ILINÓIS vinte e três
... ...

O exemplo a seguir calcula um tipo de evento de tempestade de histograma que teve tempestades que duraram mais de um dia. Como Duration tem muitos valores, use bin() para agrupar os valores em intervalos de um dia.

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

Saída

Tipo de Evento Comprimento Contagem de Eventos
Seca 30.00:00:00 1646
Wildfire 30.00:00:00 11
Calor 30.00:00:00 14
Saturação 30.00:00:00 20
Chuva Forte 29.00:00:00 42
... ... ...

O exemplo a seguir mostra os valores padrão de agregações quando a tabela de entrada está vazia. O summarize operador é usado para calcular os valores padrão das agregações. Quando a entrada do operador summarize tiver pelo menos uma chave group-by, o resultado também será vazio.

Quando a entrada do operador summarize não possui uma chave de agrupamento por vazia, o resultado são os valores padrão das agregações utilizadas no summarize. Para obter mais informações, consulte Valores padrão das 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) é NaN devido à 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 agregação avg soma apenas os valores não nulos e conta apenas esses valores em seu cálculo, ignorando todos 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 função de contagem padrão inclui valores nulos em sua contagem:

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]