operador summarize

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

Sales | summarize NumTransactions=count(), Total=sum(UnitPrice * NumUnits) by Fruit, StartOfMonth=startofmonth(SellDateTime)

Retorna uma tabela com a quantidade de transações de venda e o valor total por fruta e mês de vendas. As colunas de saída mostram a contagem de transações, o valor da transação, a fruta e o datetime do início do mês em que a transação foi registrada.

T | summarize count() by price_range=bin(price, 10.0)

Uma tabela que mostra quantos itens têm preços em cada intervalo [0,10,0], [10,0,20,0] e assim por diante. Este exemplo tem uma coluna para a contagem e um para a faixa de preços. Todas as outras colunas de entrada são ignoradas.

Syntax

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

Argumentos

  • Column: nome opcional para uma coluna de resultados. Assume o padrão de um nome derivado da expressão.

  • Agregação: Uma chamada para uma função de agregação, como count() ou avg(), com nomes de coluna como argumentos.

  • GroupExpression: Uma expressão escalar que pode fazer referência aos dados de entrada. A saída terá o mesmo número de registros e de valores distintos em todas as expressões de grupo.

  • SummarizeParameters: zero ou mais parâmetros (separados por espaço) na forma deValor de Nome= que controlam o comportamento. Os seguintes parâmetros são compatíveis:

    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. Consulte a consulta shuffle
    hint.shufflekey=<key> A shufflekey consulta compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. Consulte a consulta shuffle
    hint.strategy=shuffle A shuffle consulta de estratégia compartilha a carga de consulta em nós de cluster, em que cada nó processará uma partição dos dados. Consulte a consulta shuffle

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 linha única (vazia).
  • Se GroupExpression for fornecido, a saída não terá linhas.

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 a mesma quantidade de linhas e de diferentes combinações de valores by (que pode 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.
  • Não há mais suporte para os compartimentos de hora automática das colunas datetime. Em vez disso, use a compartimentalização explícita. Por exemplo, summarize by bin(timestamp, 1h).

Agrega os valores padrão

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

Operador Valor padrão
count(), countif(), dcount(), dcountif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() matriz dinâmica vazia ([])
Todos os outros null

Ao usar essas agregações sobre entidades que incluem valores nulos, os valores nulos serão ignorados e não participarão do cálculo (confira os exemplos abaixo).

Exemplos

Summarize price by fruit and supplier.

Combinação exclusiva

Determine quais combinações exclusivas de ActivityType e de CompletionStatus existem em uma tabela. Não há funções de agregação, apenas chaves de agrupamento. A saída exibirá apenas as colunas desses resultados:

Activities | summarize by ActivityType, completionStatus
ActivityType completionStatus
dancing started
singing started
dancing abandoned
singing completed

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

Localiza o carimbo de data/hora mínimo e máximo de todos os registros na tabela Atividades. Não há qualquer cláusula group-by e, portanto, há apenas uma linha na saída:

Activities | summarize Min = min(Timestamp), Max = max(Timestamp)
Min Max
1975-06-09 09:21:45 2015-12-24 23:45:00

Contagem distinta

Crie uma linha para cada continente, mostrando uma contagem das cidades nas quais as atividades ocorrem. Como há poucos valores para "continent", nenhuma função de agrupamento é necessária na cláusula 'by':

Activities | summarize cities=dcount(city) by continent
cities continent
4290 Asia
3267 Europe
2673 North America

Histograma

O exemplo a seguir calcula um histograma para cada tipo de atividade. Como Duration tem muitos valores, use bin para agrupar os valores em intervalos de dez minutos:

Activities | summarize count() by ActivityType, length=bin(Duration, 10m)
count_ ActivityType length
354 dancing 0:00:00.000
23 singing 0:00:00.000
2717 dancing 0:10:00.000
341 singing 0:10:00.000
725 dancing 0:20:00.000
2876 singing 0:20:00.000
...

Agrega os valores padrão

Quando a entrada do operador summarize tiver pelo menos uma chave de agrupamento, o resultado também será vazio.

Quando a entrada do operador summarize não tem uma chave de agrupamento vazia, o resultado são os valores padrão das agregações usadas no summarize:

datatable(x:long)[]
| summarize any(x), arg_max(x, x), arg_min(x, 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)
any_x max_x max_x_x min_x min_x_x avg_x schema_x max_x1 min_x1 percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)
set_x list_x
[] []

A agregação média soma todos os não nulos e conta apenas aqueles que participaram do cálculo (isso não levará nulos em conta).

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

A contagem regular contará valores nulos:

range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)
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)
set_y set_y1
[5.0] [5.0]