Operador de resumo
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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.
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] |