Оператор summarizesummarize operator

Создает таблицу, которая объединяет содержимое входной таблицы.Produces a table that aggregates the content of the input table.

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

Возвращает таблицу с указанием количества транзакций продаж и общей суммы в расчете на один фрукт и продажу в месяц.Returns a table with how many sell transactions and the total amount per fruit and sell month. Выходные столбцы указывают на количество транзакций, доход от транзакции, тип фрукта, а также дату и время начала месяца регистрации транзакции.The output columns show the count of transactions, transaction worth, fruit, and the datetime of the beginning of the month in which the transaction was recorded.

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

В таблице отображено количество элементов с ценами в каждом интервале [0,10.0], [10.0,20.0] и т. д.A table that shows how many items have prices in each interval [0,10.0], [10.0,20.0], and so on. Пример включает один столбец для подсчета и один столбец для диапазон цен.This example has a column for the count and one for the price range. Все остальные входные столбцы игнорируются.All other input columns are ignored.

СинтаксисSyntax

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

АргументыArguments

  • Column — необязательное имя итогового столбца.Column: Optional name for a result column. По умолчанию это имя, получаемое из выражения.Defaults to a name derived from the expression.
  • Агрегирование. Вызов статистической функции, например count() или avg(), с именами столбцов в качестве аргументов.Aggregation: A call to an aggregation function such as count() or avg(), with column names as arguments. См. список статистических функций.See the list of aggregation functions.
  • GroupExpression. Скалярное выражение, которое может ссылаться на входные данные.GroupExpression: A scalar expression that can reference the input data. Выходные данные будут содержать такое количество записей, которое будет соответствовать количеству несовпадающих значений во всех выражениях групп.The output will have as many records as there are distinct values of all the group expressions.

Примечание

Если таблица входных данных пуста, выходные данные зависят от того, используется ли GroupExpression.When the input table is empty, the output depends on whether GroupExpression is used:

  • Если свойство GroupExpression не предоставлено, вывод будет представлен одной (пустой) строкой.If GroupExpression is not provided, the output will be a single (empty) row.
  • Если же свойство GroupExpression предоставлено, вывод не будет иметь строк.If GroupExpression is provided, the output will have no rows.

Возвращаемое значениеReturns

Входные строки объединяются в группы с одинаковыми значениями выражений by .The input rows are arranged into groups having the same values of the by expressions. Затем указанные агрегатные функции выполняют вычисления и создают строку для каждой группы.Then the specified aggregation functions are computed over each group, producing a row for each group. Результат содержит столбцы by и хотя бы один столбец для каждого вычисленного статистического выражения.The result contains the by columns and also at least one column for each computed aggregate. (Некоторые агрегатные функции возвращают несколько столбцов).(Some aggregation functions return multiple columns.)

Результат содержит столько строк, сколько существует несовпадающих комбинаций значений by (которые могут быть равны нулю).The result has as many rows as there are distinct combinations of by values (which may be zero). Если ключи группы не указаны, в результате будет содержаться одна запись.If there are no group keys provided, the result has a single record.

Чтобы суммировать диапазоны числовых значений, можно ограничить диапазоны дискретными значениями с помощью bin().To summarize over ranges of numeric values, use bin() to reduce ranges to discrete values.

Примечание

  • Для агрегатных выражений и выражений группирования допускаются произвольные выражения, но эффективнее использовать простые имена столбцов или функцию bin() для числовых столбцов.Although you can provide arbitrary expressions for both the aggregation and grouping expressions, it's more efficient to use simple column names, or apply bin() to a numeric column.
  • Автоматические почасовые объединения для столбцов "Дата и время" больше не поддерживаются.The automatic hourly bins for datetime columns is no longer supported. Вместо этого используйте явное группирование.Use explicit binning instead. Например, summarize by bin(timestamp, 1h).For example, summarize by bin(timestamp, 1h).

Список статистических функцийList of aggregation functions

ФункцияFunction ОписаниеDescription
any()any() Возвращает случайное непустое значение в группе.Returns a random non-empty value for the group
anyif()anyif() Возвращает случайное непустое значение в группе (с предикатом)Returns a random non-empty value for the group (with predicate)
arg_max()arg_max() Возвращает одно или несколько выражений, если аргумент достигает максимумаReturns one or more expressions when the argument is maximized
arg_min()arg_min() Возвращает одно или несколько выражений, если аргумент достигает минимумаReturns one or more expressions when the argument is minimized
avg()avg() Возвращает среднее значение в группе.Returns an average value across the group
avgif()avgif() Возвращает среднее значение в группе (с предикатом)Returns an average value across the group (with predicate)
binary_all_andbinary_all_and Возвращает агрегированное значение с помощью логического AND группыReturns aggregated value using the binary AND of the group
binary_all_orbinary_all_or Возвращает агрегированное значение с помощью логического OR группыReturns aggregated value using the binary OR of the group
binary_all_xorbinary_all_xor Возвращает агрегированное значение с помощью логического XOR группыReturns aggregated value using the binary XOR of the group
buildschema()buildschema() Возвращает минимальную схему, которая допускает все значения входных данных dynamicReturns the minimal schema that admits all values of the dynamic input
count()count() Возвращает число для групп.Returns a count of the group
countif()countif() Возвращает число с предикатом для групп.Returns a count with the predicate of the group
dcount()dcount() Возвращает приблизительное число различных элементов в группеReturns an approximate distinct count of the group elements
dcountif()dcountif() Возвращает приблизительное число различных элементов в группе (с предикатом)Returns an approximate distinct count of the group elements (with predicate)
make_bag()make_bag() Возвращает контейнер свойств динамических значений в группеReturns a property bag of dynamic values within the group
make_bag_if()make_bag_if() Возвращает контейнер свойств динамических значений в группе (с предикатом)Returns a property bag of dynamic values within the group (with predicate)
make_list()make_list() Возвращает список всех значений в группеReturns a list of all the values within the group
make_list_if()make_list_if() Возвращает список всех значений в группе (с предикатом)Returns a list of all the values within the group (with predicate)
make_list_with_nulls()make_list_with_nulls() Возвращает список всех значений в группе, включая значения NULLReturns a list of all the values within the group, including null values
make_set()make_set() Возвращает набор несовпадающих значений в группеReturns a set of distinct values within the group
make_set_if()make_set_if() Возвращает набор несовпадающих значений в группе (с предикатом)Returns a set of distinct values within the group (with predicate)
max()max() Возвращает максимальное значение в группе.Returns the maximum value across the group
maxif()maxif() Возвращает максимальное значение в группе (с предикатом)Returns the maximum value across the group (with predicate)
min()min() Возвращает минимальное значение в группе.Returns the minimum value across the group
minif()minif() Возвращает минимальное значение в группе (с предикатом)Returns the minimum value across the group (with predicate)
percentiles()percentiles() Возвращает приблизительное значение процентиля группыReturns the percentile approximate of the group
percentiles_array()percentiles_array() Возвращает приблизительные значения процентилей группыReturns the percentiles approximates of the group
percentilesw()percentilesw() Возвращает приблизительное взвешенное значение процентиля группыReturns the weighted percentile approximate of the group
percentilesw_array()percentilesw_array() Возвращает приблизительные взвешенные значения процентилей группыReturns the weighted percentiles approximates of the group
stdev()stdev() Возвращает стандартное отклонение в группеReturns the standard deviation across the group
stdevif()stdevif() Возвращает стандартное отклонение в группе (с предикатом)Returns the standard deviation across the group (with predicate)
sum()sum() Возвращает сумму элементов в группеReturns the sum of the elements within the group
sumif()sumif() Возвращает сумму элементов в группе (с предикатом)Returns the sum of the elements within the group (with predicate)
variance()variance() Возвращает вариантность в группеReturns the variance across the group
varianceif()varianceif() Возвращает вариантность в группе (с предикатом)Returns the variance across the group (with predicate)

Значения по умолчанию для агрегатовAggregates default values

В следующей таблице перечислены значения по умолчанию для агрегатов:The following table summarizes the default values of aggregations:

ОператорOperator Значение по умолчаниюDefault value
count(), countif(), dcount(), dcountif()count(), countif(), dcount(), dcountif() 00
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if()make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() пустой динамический массив ([])empty dynamic array ([])
Все остальныеAll others nullnull

Если использовать эти агрегаты для сущностей, которые содержат значения NULL, такие значения будут игнорироваться и не будут использоваться в вычислении (см. примеры ниже).When using these aggregates over entities which includes null values, the null values will be ignored and won't participate in the calculation (see examples below).

ПримерыExamples

Суммировать цены по фруктам и поставщикам

Пример Уникальное сочетаниеExample: Unique combination

Определите уникальные сочетания ActivityType и CompletionStatus в таблице.Determine what unique combinations of ActivityType and CompletionStatus there are in a table. Здесь нет статистических функций, только ключи group-by.There are no aggregation functions, just group-by keys. В выходных данных будут показаны только столбцы для этих результатов:The output will just show the columns for those results:

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

Пример Минимальная и максимальная метки времениExample: Minimum and maximum timestamp

Находит минимальную и максимальную метки времени для всех записей в таблице "Действия".Finds the minimum and maximum timestamp of all records in the Activities table. Предложение group by отсутствует, поэтому в выходных данных всего одна строка:There is no group-by clause, so there is just one row in the output:

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

Пример Количество несовпадающихExample: Distinct count

Создайте строку для каждого континента, отображающую количество городов, в которых выполняются действия.Create a row for each continent, showing a count of the cities in which activities occur. Поскольку для свойства "continent" существует несколько значений, в предложении "by" не требуется функция группирования:Because there are few values for "continent", no grouping function is needed in the 'by' clause:

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

Пример ГистограммаExample: Histogram

В следующем примере вычисляется гистограмма для каждого типа действия.The following example calculates a histogram for each activity type. Поскольку Duration имеет много значений, используйте bin, чтобы сгруппировать его значения в 10-минутные интервалы:Because Duration has many values, use bin to group its values into 10-minute intervals:

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

Пример значений по умолчанию для агрегатовExample for the aggregates default values

Если во входных данных оператора summarize содержится хотя бы один пустой ключ group-by, результат не будет содержать выходных данных.When the input of summarize operator has at least one empty group-by key, it's result is empty, too.

Если же входные данные оператора summarize не содержат пустой ключ group-by, результатом будут значения по умолчанию для агрегатов, используемых в операторе summarize:When the input of summarize operator doesn't have an empty group-by key, the result is the default values of the aggregates used in the 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_xany_x max_xmax_x max_x_xmax_x_x min_xmin_x min_x_xmin_x_x avg_xavg_x schema_xschema_x max_x1max_x1 min_x1min_x1 percentile_x_55percentile_x_55 hll_xhll_x stdev_xstdev_x sum_xsum_x sumif_xsumif_x tdigest_xtdigest_x variance_xvariance_x
datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
count_xcount_x countif_countif_ dcount_xdcount_x dcountif_xdcountif_x
00 00 00 00
datatable(x:long)[]
| summarize  make_set(x), make_list(x)
set_xset_x list_xlist_x
[][] [][]

Агрегатная функция avg суммирует все значения, отличные от NULL, и подсчитывает только те, которые использовались в вычислении (не принимает во внимание значения NULL).The aggregate avg sums all the non-nulls and counts only those which participated in the calculation (will not take nulls into account).

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

При обычном расчете значения NULL будут учитываться:The regular count will count nulls:

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