Оператор summarize

Создает таблицу, которая объединяет содержимое входной таблицы.

Синтаксис

T| summarize [ SummarizeParameters ] [[Столбец=] Агрегирование [, ...]] [by [Столбец=] GroupExpression [, ...]]

Дополнительные сведения о соглашениях о синтаксисе.

Параметры

Имя Тип Обязательно Описание
Столбец string Имя столбца результатов. По умолчанию это имя, получаемое из выражения.
Агрегирование string ✔️ Вызов статистической функции , такой как count() или avg(), с именами столбцов в качестве аргументов.
GroupExpression скаляр ✔️ Скалярное выражение, которое может ссылаться на входные данные. Выходные данные будут содержать такое количество записей, которое будет соответствовать количеству несовпадающих значений во всех выражениях групп.
SummarizeParameters string Ноль или более параметров, разделенных пробелами, в виде значения имени=, которые управляют поведением. См. раздел Поддерживаемые параметры.

Примечание

Если таблица входных данных пуста, выходные данные зависят от того, используется ли GroupExpression.

  • Если свойство GroupExpression не предоставлено, вывод будет представлен одной (пустой) строкой.
  • Если же свойство GroupExpression предоставлено, вывод не будет иметь строк.

Поддерживаемые параметры

Имя Описание
hint.num_partitions Указывает количество секций, используемых для совместного использования нагрузки запросов на узлах кластера. См. запрос на перетасовку
hint.shufflekey=<key> Запрос shufflekey разделяет нагрузку на узлы кластера, используя ключ для секционирования данных. См. запрос на перетасовку
hint.strategy=shuffle Запрос shuffle стратегии разделяет нагрузку на узлы кластера, где каждый узел будет обрабатывать одну секцию данных. См. запрос на перетасовку

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

Входные строки объединяются в группы с одинаковыми значениями выражений by . Затем указанные агрегатные функции выполняют вычисления и создают строку для каждой группы. Результат содержит столбцы by и хотя бы один столбец для каждого вычисленного статистического выражения. (Некоторые агрегатные функции возвращают несколько столбцов).

Результат содержит столько строк, сколько существует несовпадающих комбинаций значений by (которые могут быть равны нулю). Если ключи группы не указаны, в результате будет содержаться одна запись.

Чтобы суммировать диапазоны числовых значений, можно ограничить диапазоны дискретными значениями с помощью bin().

Примечание

  • Для агрегатных выражений и выражений группирования допускаются произвольные выражения, но эффективнее использовать простые имена столбцов или функцию bin() для числовых столбцов.
  • Автоматические почасовые объединения для столбцов "Дата и время" больше не поддерживаются. Вместо этого используйте явное группирование. Например, summarize by bin(timestamp, 1h).

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

В следующей таблице перечислены значения по умолчанию для агрегатов:

Оператор Значение по умолчанию
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() пустой динамический массив ([])
Все остальные null

Примечание

При применении этих статистических выражений к сущностям, которые содержат значения NULL, значения NULL игнорируются и не учитываются при вычислении. Примеры см. в разделе Статистические выражения значений по умолчанию.

Примеры

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

Уникальное сочетание

Следующий запрос определяет, какие уникальные State сочетания и EventType существуют для штормов, которые привели к прямой травме. Здесь нет статистических функций, только ключи group-by. В выходных данных будут показаны только столбцы для этих результатов.

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

Выходные данные

В следующей таблице показаны только первые 5 строк. Чтобы просмотреть полные выходные данные, выполните запрос.

Состояние EventType
Техас Шквалистый ветер
Техас Внезапное наводнение
Техас Зимняя погода
Техас Очень сильный ветер
Техас Наводнение
... ...

Минимальная и максимальная метки времени

Находит минимальное и максимальное количество сильных дождей на Гавайях. Предложение group-by отсутствует, поэтому в выходных данных есть только одна строка.

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

Выходные данные

Min Max
01:08:00 11:55:00

Количество уникальных значений

Создайте строку для каждого континента, отображающую количество городов, в которых выполняются действия. Поскольку для свойства "continent" существует несколько значений, в предложении "by" не требуется функция группирования:

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

Выходные данные

В следующей таблице показаны только первые 5 строк. Чтобы просмотреть полные выходные данные, выполните запрос.

Состояние TypesOfStorms
Техас 27
Калифорния 26
ПЕНСИЛЬВАНИЯ 25
Грузия 24
Иллинойс 23
... ...

Гистограмма

В следующем примере вычисляется гистограмма штормового типа со штормами, дляющимися дольше 1 дня. Так как Duration имеет много значений, используйте для bin() группировки его значений в 1-дневные интервалы.

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

Выходные данные

EventType Длина EventCount
Засухи 30.00:00:00 1646
Wildfire 30.00:00:00 11
Тепла 30.00:00:00 14
Наводнение 30.00:00:00 20
Сильный ливень 29.00:00:00 42
... ... ...

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

Если входные данные оператора имеют по крайней summarize мере один пустой ключ group-by, его результат также будет пустым.

Если входные данные оператора не имеют пустого summarize ключа group-by, результатом являются значения статистических выражений по умолчанию, используемые в summarize разделе Дополнительные сведения см. в разделе Значения агрегатов по умолчанию.

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)

Выходные данные

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
Не число 0 0 0 0

Результатом avg_x(x) является NaN деление на 0.

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
[] []

Агрегат avg суммирует все значения, отличные от NULL, и подсчитывает только те, которые участвовали в вычислении (не учитывает значения NULL).

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

Выходные данные

sum_y avg_y
15 5

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

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]