Поделиться через


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

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

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

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

Примечание.

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

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

Синтаксис

make_list(expr [, maxSize])

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

Параметры

Имя (название) Type Обязательно Описание
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
["треугольник","квадрат","прямоугольник","пентагон","шестнадцатеугольник","heptagon","octagon", "nonagon", "декагон"]

Использование предложения "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"]
true ["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}]
true [{"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, кроме того, он принимает предикат.