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

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

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

Примечание

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

Устаревшие псевдонимы: makelist()

Синтаксис

make_list(expr [,maxSize])

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

Параметры

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

Примечание

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

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

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

Совет

Используйте функцию array_sort_asc() или array_sort_desc() для создания упорядоченного списка по определенному ключу.

Примеры

Один столбец

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

let shapes = datatable (name: string, sideCount: int)
[
    "triangle", 3,
    "square", 4,
    "rectangle", 4,
    "pentagon", 5,
    "hexagon", 6,
    "heptagon", 7,
    "octagon", 8,
    "nonagon", 9,
    "decagon", 10
];
shapes
| summarize mylist = make_list(name)

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

Mylist
["triangle","square","rectangle","пентагон","hexagon","heptagon","octagon","nonagon","decagon"]

Использование предложения by

В следующем примере выполняется запрос с помощью by предложения :

let shapes = datatable (name: string, sideCount: int)
[
    "triangle", 3,
    "square", 4,
    "rectangle", 4,
    "pentagon", 5,
    "hexagon", 6,
    "heptagon", 7,
    "octagon", 8,
    "nonagon", 9,
    "decagon", 10
];
shapes
| summarize mylist = make_list(name) by isEvenSideCount = sideCount % 2 == 0

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

isEvenSideCount Mylist
false ["треугольник","пентагон","heptagon","nonagon"]
Да ["square","rectangle","hexagon","octagon","decagon"]

Упаковка динамического объекта

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

let shapes = datatable (name: string, sideCount: int)
[
    "triangle", 3,
    "square", 4,
    "rectangle", 4,
    "pentagon", 5,
    "hexagon", 6,
    "heptagon", 7,
    "octagon", 8,
    "nonagon", 9,
    "decagon", 10
];
shapes
| extend d = bag_pack("name", name, "sideCount", sideCount)
| summarize mylist = make_list(d) by isEvenSideCount = sideCount % 2 == 0

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

isEvenSideCount Mylist
false [{"name":"triangle","sideCount":3},{"name":"пентагон","sideCount":5},{"name":"heptagon","sideCount":7},{"name":"nonagon","sideCount":9}]
Да [{"name":"square","sideCount":4},{"name":"rectangle","sideCount":4},{"name":"hexagon","sideCount":6},{"name":"octagon","sideCount":8},{"name":"decagon","sideCount":10}]

make_list_if Оператор аналогичен make_list, за исключением того, что он также принимает предикат.