make_list() (aggregation function)

Creates a dynamic JSON object (array) of all the values of Expr in the group.

Note

This function is used in conjunction with the summarize operator.

Deprecated aliases: makelist()

Syntax

make_list (Expr [, MaxSize])

Arguments

Name Type Required Description
Expr dynamic Expression used for aggregation calculations.
MaxSize integer The limit on the maximum number of elements returned. The default is 1048576 and can't exceed 1048576.

Note

The deprecated version has a default MaxSize limit of 128.

Returns

Returns a dynamic JSON array of all the values of Expr in the group. If the input to the summarize operator isn't sorted, the order of elements in the resulting array is undefined. If the input to the summarize operator is sorted, the order of elements in the resulting array tracks that of the input.

Tip

Use the array_sort_asc() or array_sort_desc() function to create an ordered list by some key.

Examples

One column

The following example makes a list out of a single column:

[Click to run query]

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)

Results

mylist
["triangle","square","rectangle","pentagon","hexagon","heptagon","octagon","nonagon","decagon"]

Using the 'by' clause

The following example runs a query using the by clause:

[Click to run query]

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

Results

isEvenSideCount mylist
false ["triangle","pentagon","heptagon","nonagon"]
true ["square","rectangle","hexagon","octagon","decagon"]

Packing a dynamic object

The following examples show how to pack a dynamic object in a column before making it a list.

[Click to run query]

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 = pack("name", name, "sideCount", sideCount)
| summarize mylist = make_list(d) by isEvenSideCount = sideCount % 2 == 0

Results

mylist isEvenSideCount
false [{"name":"triangle","sideCount":3},{"name":"pentagon","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}]

See also

make_list_if operator is similar to make_list, except it also accepts a predicate.