By utilizing the aggregation and grouping features, you can establish groups within the Result Matrix and subsequently perform aggregation operations on these groups, such as SUM, COUNT, etc.
Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Supported Aggregations
AVG
COUNT
MAX
MIN
SUM
...
Code Block | ||
---|---|---|
| ||
def groupByData = api.newMatrix() // Definition of result matrix (columns, rows). .withColumns('TextColumn1', 'TextColumn2', 'NumericColumn3', 'NumericColumn4') .withRows(rows) // Property `.withGroupBy` defines that the `TextColumn1` and `NumericColumn3` are used for group by (The order is important). .withGroupBy(['TextColumn1', 'NumericColumn3']) // Property `.withColumnAggregation` defines that the values for subtotal rows that will be calculated as SUM. // Values are based on the group by definition (`NumericColumn3`). andThis aredefinition to be calculated as SUMis optional. // This definition is optional. When not used, like e.g. for TextColumn1`TextColumn1`, there will be no aggregation calculated for the `TextColumn1`.*/ .withColumnAggregation('NumericColumn3', SUM) // Property `.calculateGroupByData` is an end statement for group definition. // This statement is only used together with `.withColumnAggregation`. .calculateGroupByData() |
Description
Definition of result matrix (columns, rows).
Property
.withGroupBy
defines that theTextColumn1
andNumericColumn3
are used for the group by (The order is important).Property
.withColumnAggregation
defines the values for subtotal rows that will be calculated as SUM. Values are based on the group by definition (NumericColumn3
). This definition is optional. When not used, like e.g. forTextColumn1
, there will be no aggregation calculated for theTextColumn1
.Property
.calculateGroupByData
is an end statement for group definition. This statement is only used together with.withColumnAggregation
.
Info | |||||
---|---|---|---|---|---|
Static import is required to use a predefined enum with aggregation types.
|
...
Code Block | ||
---|---|---|
| ||
import net.pricefx.common.api.FieldFormatType
import static net.pricefx.server.dto.calculation.ResultMatrixGrouping.AggregateFunctionType
import static net.pricefx.server.dto.calculation.ResultMatrixGrouping.AggregateFunctionType.SUM
def listPriceItems = null
def filter = [
Filter.equal("name", "ListPrice"),
]
List<String> fields = ["ProductId", "ListPrice", "Currency"]
def listPriceItems = api.find("PX3", 0, api.getMaxFindResultsLimit(), "ProductId", fields, *filter)
def rows = listPriceItems
def columnFormats = [
"ProductId": FieldFormatType.TEXT,
"ListPrice": FieldFormatType.MONEY,
"Currency" : FieldFormatType.MONEY,
]
def resultMatrix = api.newMatrix()
.withEnableClientFilter(true)
.withColumnFormats(columnFormats)
.withRows(rows)
.withGroupBy(['Currency'])
.withColumnAggregation('ListPrice', SUM)
.calculateGroupByData()
return resultMatrix |
...