Compartilhar via


summarize operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Syntax

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

Learn more about syntax conventions.

Parameters

Name Tipo Required Description
Column string O nome da coluna de resultado. Assume o padrão de um nome derivado da expressão.
Aggregation string ✔️ A call to an aggregation function such as count() or avg(), with column names as arguments.
GroupExpression scalar ✔️ 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 or more space-separated parameters in the form of Name=Value that control the behavior. See supported parameters.

Note

When the input table is empty, the output depends on whether GroupExpression is used:

  • If GroupExpression isn't provided, the output is a single (empty) row.
  • If GroupExpression is provided, the output has no rows.

Supported parameters

Name Description
hint.num_partitions Especifica o número de partições usadas para compartilhar a carga de consulta em nós de cluster. See shuffle query
hint.shufflekey=<key> A consulta shufflekey compartilha a carga de consulta em nós de cluster usando uma chave para particionar dados. See shuffle query
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. See shuffle query

Returns

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.

Note

  • 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:

Operator Default value
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 ([])
All others nulo

Note

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. See Examples.

Examples

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Talvez seja necessário modificar o nome da tabela na consulta de exemplo para corresponder à tabela em seu workspace.

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

Output

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

State EventType
TEXAS Thunderstorm Wind
TEXAS Flash Flood
TEXAS Winter Weather
TEXAS High Wind
TEXAS Flood
... ...

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)

Output

Min 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

Output

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

State TypesOfStorms
TEXAS 27
CALIFORNIA 26
PENNSYLVANIA 25
GEORGIA 24
ILLINOIS 23
... ...

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

Output

EventType Length EventCount
Drought 30.00:00:00 1646
Wildfire 30.00:00:00 11
Heat 30.00:00:00 14
Flood 30.00:00:00 20
Heavy Rain 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)

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 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)

Output

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)

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]