Interface patterns give you an opportunity to explore different interface designs. Be sure to check out How to Adapt a Pattern for Your Application.
Aggregate data from a data store entity, specifically the total number of employees for each title in the Engineering department, to display in a bar chart.
This recipe uses example data and objects created through the Use the Write to Data Store Entity Smart Service Function on an Interface recipe. Make sure you've completed that recipe in your environment first.
This scenario demonstrates:
The report builder allows you to create basic grids and charts to display data from a record type object or data store entity using an intuitive interface.
You can create this same pattern in Design Mode when you use a record type as the source of your chart. Learn how to quickly and easily configure charts using records.
EMPLOYEE_ENTITY
constant.firstName
, lastName
, and department
columns so that only the id
column remains.title
and click Add Field.Count
for the id
column.Total
.title
.You should see a chart that looks similar to this:
To add a filter, enter the following expression after the aggregation parameter of a!query()
:
filter: a!queryFilter(field: "department", operator: "=", value: "Engineering"),
The comma at the end of this expression is included because pagingInfo is defined later.
Your final expression should look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
a!localVariables(
local!pagingInfo: a!pagingInfo(
startIndex: 1,
batchSize: - 1,
sort: {}
),
local!datasubset: a!queryEntity(
entity: cons!EMPLOYEE_ENTITY,
query: a!query(
aggregation: a!queryAggregation(
aggregationColumns: {
a!queryAggregationColumn(field: "id", aggregationFunction: "COUNT"),
a!queryAggregationColumn(field: "title", isGrouping: true)
}
),
filter: a!queryFilter(field: "department", operator: "=", value: "Engineering"),
pagingInfo: local!pagingInfo
),
fetchTotalCount: false
),
{
a!barChartField(
categories: {
index(local!datasubset.data, "title", null)
},
series: {
a!chartSeries(
label: "Total",
data: index(local!datasubset.data, "id", null)
)
},
colorScheme: "OCEAN"
)
}
)
a!query()
. If you would like to filter using multiple constraints, use a!queryLogicalExpression()
in the logicalExpression parameter instead.