make_set() (агрегатная функция)

Создает dynamic массив набора различных значений, которые expr принимает в группе.

Значения NULL игнорируются и не учитываются при вычислении.

Примечание

Эта функция используется в сочетании с оператором summarize.

Нерекомендуемые псевдонимы: makeset()

Синтаксис

make_set(expr [,maxSize])

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

Параметры

Имя Тип Обязательно Описание
expr string ✔️ Выражение, используемое для вычисления агрегирования.
Maxsize int Максимальное количество возвращаемых элементов. Значения по умолчанию и максимальное значение — 1048576.

Примечание

Нерекомендуемая версия имеет ограничение maxSize по умолчанию 128.

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

dynamic Возвращает массив набора уникальных значений, которые expr принимает в группе. Порядок сортировки массива не определен.

Совет

Чтобы подсчитать только уникальные значения, используйте dcount() или count_distinct().

Пример

Установка из скалярного столбца

В следующем примере показан набор состояний, сгруппированных с одинаковым объемом ущерба от урожая.

StormEvents 
| summarize states=make_set(State) by DamageCrops

Показанная таблица результатов содержит только первые 10 строк.

DamageCrops штаты
0 ["СЕВЕРНАЯ КАРОЛИНА","ВИСКОНСИН","НЬЮ-ЙОРК","АЛЯСКА","ДЕЛАВЭР","ОКЛАХОМА","ИНДИАНА","ИЛЛИНОЙС","МИННЕСОТА","ЮЖНАЯ ДАКОТА","ТЕХАС","ЮТА","КОЛОРАДО","ВЕРМОНТ","НЬЮ-ДЖЕРСИ","ВИРДЖИНИЯ","КАЛИФОРНИЯ","ПЕНСИЛЬВАНИЯ","МОНТАНА","ВАШИНГТОН","ОРЕГGON","ГАВАЙИ","АЙДАХО","ПУЭРТО-РИКО","МИЧИГАН","ФЛОРИДА","ВАЙОМИНГ","МЕКСИКАНСКИЙ ЗАЛИВ","НЕВАДА","ЛУИЗИАНА","ТЕННЕССИ", "КЕНТУККИ","МИССИСИПИ","АЛАБАМА","ДЖОРДЖИЯ","ЮЖНАЯ КАРОЛИНА","ОГАЙО","НЬЮ-МЕКСИКО","АТЛАНТИЧЕСКИЙ ЮГ","НЬЮ-КАРОЛИНА", "НЬЮ-КАРОЛИНА" ХЭМПШИР","АТЛАНТИЧЕСКИЙ СЕВЕР","СЕВЕРНАЯ ДАКОТА","АЙОВА","НЕБРАСКА","ЗАПАДНАЯ ВИРДЖИНИЯ","МЭРИЛЕНД","КАНЗАС","МИССУРИ","АРКАНЗАС","АРИЗОНА","МАССАЧУСЕТС","МЭН","КОННЕКТИКУТ",","ГУАМ","ГАВАЙИ УОТЕРС","АМЕРИКАНСКОЕ САМОА","ОЗЕРО ГУРОН","ОКРУГ КОЛУМБИЯ","РОД-АЙЛЕНД","ОЗЕРО МИЧИГАН","ОЗЕРО СУПЕРИСТО","ОЗЕРО СЕНТ-КЛЕР","ОЗЕРО ERIE","ОЗЕРО ОНТАРИО","E PACIFIC","ЗАЛИВ АЛЯСКА"]
30 000 ["ТЕХАС","НЕБРАСКА","АЙОВА","МИННЕСОТА","ВИСКОНСИН"]
4000000 ["КАЛИФОРНИЯ","КЕНТУККИ","СЕВЕРНАЯ ДАКОТА","ВИСКОНСИН","ВИРДЖИНИЯ"]
3000000 ["КАЛИФОРНИЯ","ИЛЛИНОЙС","МИССУРИ","ЮЖНАЯ КАРОЛИНА","СЕВЕРНАЯ КАРОЛИНА","МИССИСИПИ","СЕВЕРНАЯ ДАКОТА","ОГАЙО"]
14000000 ["КАЛИФОРНИЯ","СЕВЕРНАЯ ДАКОТА"]
400000 ["КАЛИФОРНИЯ","МИССУРИ","МИССИСИПИ","НЕБРАСКА","ВИСКОНСИН","СЕВЕРНАЯ ДАКОТА"]
50 000 ["КАЛИФОРНИЯ","ДЖОРДЖИЯ","НЕБРАСКА","ТЕХАС","ЗАПАДНАЯ ВИРДЖИНИЯ","КАНЗАС","МИССУРИ","МИССИСИПИ","НЬЮ-МЕКСИКО","АЙОВА","СЕВЕРНАЯ ДАКОТА","ОГАЙО","ВИСКОНСИН","ИЛЛИНОЙС","МИННЕСОТА","КЕНТУККИ"]
18000 ["ВАШИНГТОН","ВИСКОНСИН"]
107900000 ["CALIFORNIA"]
28900000 ["CALIFORNIA"]

Задать из столбца массива

В следующем примере показан набор элементов в массиве.

datatable (Val: int, Arr1: dynamic)
[
    1, dynamic(['A1', 'A2', 'A3']), 
    5, dynamic(['A2', 'C1']),
    7, dynamic(['C2', 'A3']),
    5, dynamic(['C2', 'A1'])
] 
| summarize Val_set=make_set(Val), Arr1_set=make_set(Arr1)
Val_set Arr1_set
[1,5,7] ["A1","A2","A3","C1","C2"]
  • Используйте mv-expand оператор для противоположной функции.
  • make_set_if Оператор аналогичен make_set, за исключением того, что он также принимает предикат.