GROUP_BY

Groups an array of objects by a key or the result of a LAMBDA function

Syntax 

GROUP_BY(items, key_or_lambda)

Usage examples 

Example 1

Input

1
{
2
"employees": [
3
{
4
"name": "Alice",
5
"office": "Dublin"
6
},
7
{
8
"name": "Bob",
9
"office": "Dublin"
10
},
11
{
12
"name": "Charlie",
13
"office": "New York"
14
},
15
{
16
"name": "Dave",
17
"office": "New York"
18
}
19
]
20
}

Formula

GROUP_BY(employees, "office")

Output

1
{
2
"Dublin": [
3
{
4
"name": "Alice",
5
"office": "Dublin"
6
},
7
{
8
"name": "Bob",
9
"office": "Dublin"
10
}
11
],
12
"New York": [
13
{
14
"name": "Charlie",
15
"office": "New York"
16
},
17
{
18
"name": "Dave",
19
"office": "New York"
20
}
21
]
22
}

Example 2

Input

1
{
2
"alerts": [
3
{
4
"name": "Failed Login",
5
"severity": 8,
6
"source": "firewall"
7
},
8
{
9
"name": "Config Change",
10
"severity": 5,
11
"source": "audit"
12
},
13
{
14
"name": "Disk Space Low",
15
"severity": 3,
16
"source": "monitoring"
17
},
18
{
19
"name": "Malware Detected",
20
"severity": 9,
21
"source": "endpoint"
22
}
23
]
24
}

Formula

GROUP_BY(alerts, LAMBDA(alert, IF(alert['severity'] > 7, 'high', IF(alert['severity'] > 4, 'medium', 'low'))))

Output

1
{
2
"high": [
3
{
4
"name": "Failed Login",
5
"severity": 8,
6
"source": "firewall"
7
},
8
{
9
"name": "Malware Detected",
10
"severity": 9,
11
"source": "endpoint"
12
}
13
],
14
"medium": [
15
{
16
"name": "Config Change",
17
"severity": 5,
18
"source": "audit"
19
}
20
],
21
"low": [
22
{
23
"name": "Disk Space Low",
24
"severity": 3,
25
"source": "monitoring"
26
}
27
]
28
}
Was this helpful?