Group by properties
Group elements by specific properties to get count summaries.
:: GROUP_BY ( property1 , property2 , ... )
Returns count summaries:
[
{ 'property' : 25 , 'count' : 3 },
{ 'property' : 30 , 'count' : 2 },
{ 'property' : 35 , 'count' : 1 },
...
]
GROUP_BY
returns count summaries for each unique combination of the specified properties, useful for analytics and data distribution analysis.
When using the SDKs or curling the endpoint, the query name must match what is defined in the queries.hx
file exactly.
Example 1: Group users by age
QUERY GroupUsersByAge () =>
users <- N < User >
RETURN users :: GROUP_BY ( age )
QUERY CreateUser ( name : String , age : U8 , email : String ) =>
user <- AddN < User >({
name : name ,
age : age ,
email : email
})
RETURN user
See all 11 lines
Here’s how to run the query using the SDKs or curl
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
users = [
{ "name" : "Alice" , "age" : 25 , "email" : "alice@example.com" },
{ "name" : "Bob" , "age" : 30 , "email" : "bob@example.com" },
{ "name" : "Charlie" , "age" : 25 , "email" : "charlie@example.com" },
{ "name" : "Diana" , "age" : 30 , "email" : "diana@example.com" },
{ "name" : "Eve" , "age" : 35 , "email" : "eve@example.com" },
{ "name" : "Frank" , "age" : 25 , "email" : "frank@example.com" },
]
for user in users:
client.query( "CreateUser" , user)
result = client.query( "GroupUsersByAge" , {})
print ( "Users grouped by age:" , result)
See all 18 lines
Aggregate by properties
Aggregate elements by specific properties to get detailed data grouped by those properties.
:: AGGREGATE_BY ( property1 , property2 , ... )
Returns grouped data with full objects:
[
{
'count' : 3 ,
'data' : [
{ "property1" : 25 , "property2" : "Alice" , ... },
{ "property1" : 25 , "property2" : "Charlie" , ... },
{ "property1" : 25 , "property2" : "Frank" , ... }
]
},
{
'count' : 2 ,
'data' : [
{ "property1" : 30 , "property2" : "Bob" , ... },
{ "property1" : 30 , "property2" : "Diana" , ... }
]
},
...
]
See all 18 lines
AGGREGATE_BY
returns the full data objects grouped by the specified properties, providing both count and the actual grouped elements for detailed analysis.
When using the SDKs or curling the endpoint, the query name must match what is defined in the queries.hx
file exactly.
Example 1: Aggregate users by age and email domain
QUERY AggregateUsersByAge () =>
users <- N < User >
RETURN users :: AGGREGATE_BY ( age )
QUERY CreateUser ( name : String , age : U8 , email : String ) =>
user <- AddN < User >({
name : name ,
age : age ,
email : email
})
RETURN user
See all 11 lines
Here’s how to run the query using the SDKs or curl
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
users = [
{ "name" : "Alice Johnson" , "age" : 25 , "email" : "alice@company.com" },
{ "name" : "Bob Smith" , "age" : 30 , "email" : "bob@startup.io" },
{ "name" : "Charlie Brown" , "age" : 25 , "email" : "charlie@company.com" },
{ "name" : "Diana Prince" , "age" : 30 , "email" : "diana@enterprise.org" },
{ "name" : "Eve Wilson" , "age" : 35 , "email" : "eve@freelance.net" },
{ "name" : "Frank Miller" , "age" : 25 , "email" : "frank@startup.io" },
]
for user in users:
client.query( "CreateUser" , user)
result = client.query( "AggregateUsersByAge" , {})
print ( "Users aggregated by age:" , result)
See all 18 lines
Coming Soon