$compute
Functionality
Definition
The $compute
endpoint allows you to perform calculations on attributes within a dataclass. This can be done on simple attributes or on properties of object attributes. The calculations are specified using various keywords.
This is useful for obtaining statistical information such as sum, average, count, minimum, and maximum values for numerical attributes, and count, minimum, and maximum values for string attributes.
Keywords
The following keywords can be used with $compute
to perform different calculations:
Keyword | Description |
---|---|
$all | A JSON object that defines all the functions for the attribute (average, count, min, max, and sum for numerical attributes, and count, min, and max for string attributes) |
average | Get the average of a numerical attribute |
count | Get the total number of entries in the collection or dataclass (must specify an attribute) |
min | Get the minimum value of a numerical attribute or the lowest value of a string attribute |
max | Get the maximum value of a numerical attribute or the highest value of a string attribute |
sum | Get the sum of a numerical attribute |
Syntax
To perform a calculation on an attribute, you use the following format:
GET /rest/{{dataClass}}/{{attribute}}?$compute={{keyword}}
If you want to perform a calculation on an object attribute, specify one of its properties:
GET /rest/{{dataClass}}/{{objectAttribute}}.{{property}}?$compute={{keyword}}
Detailed Behavior
Using $compute=$all
When using $compute=$all
, the response includes all possible calculations for the attribute:
-
For numerical attributes: count, sum, average, min, max
-
For string attributes: count, min, max
-
For date attributes:
Using Specific Keywords
You can specify a particular calculation by replacing $all
with one of the specific keywords (average
, count
, min
, max
, sum
). The response will then include only the result of the specified calculation.
Object Attributes
If you need to perform calculations on a property of an object attribute, you must specify the property in the request URL. The calculation will be performed on the specified property.
Combining with Other Parameters
The $compute
parameter can be combined with other parameters:
-
$filter: Narrow down the data set before computing values.
-
$orderby: Sort the data before computing values.
-
$top/$limit and $skip: Limit the number of records and skip a certain number of records.
-
$expand: Include related data in the computation.
-
$attributes: Specify which attributes to include in the response with computed values.
-
$method=entityset: Create an entity set based on computed results and save it in the server's cache.
Use Cases
Get All Computations for a Numerical Attribute
Request:
GET /rest/Payments?$attributes=Amount&$compute=$all
Response:
{
"Amount": {
"count": 20,
"sum": 12,
"average": 0.6,
"min": -128,
"max": 124
}
}
Get All Computations for a String Attribute
Request:
GET /rest/Users?$attributes=Name&$compute=$all
Response:
{
"Name": {
"count": 11,
"min": "Harry",
"max": "user8"
}
}
Get All Computations for a Date Attribute
Request:
GET /rest/Payments?$attributes=PaymentDate&$compute=$all
Response:
{
"PaymentDate": {
"count": 20,
"min": "2024-01-01T00:00:00.000Z",
"max": "2024-01-29T00:00:00.000Z"
}
}
Get Sum of a Numerical Attribute
Request:
GET /rest/Payments?$attributes=Amount&$compute=sum
Response:
12
Get Count of a Numerical Attribute
Request:
GET /rest/Payments?$attributes=Amount&$compute=count
Response:
20
Best Practices
-
Specify Only Necessary Calculations: Limit the calculations to those necessary for your application to optimize performance and reduce payload size.
-
Combine with Other Query Parameters: Use other query parameters (
$filter
,$orderby
) to refine your data retrieval and calculations. -
Handle Errors Gracefully: Implement proper error handling to manage cases where the calculations cannot be performed or data cannot be retrieved.