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


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

Область применения: ✅Microsoft Fabric

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() Используйте функцию для создания упорядоченного списка по определенному ключу.

Примеры

В примерах этого раздела показано, как использовать синтаксис для начала работы.

Один столбец

В следующем примере для возврата списка фигур в одном столбце используется набор данных, shapes.

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"

В следующем примере используется функция make_list и предложение 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"]

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

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

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