Aggregation example
The example used in aggregation schema documentation is based on a project management system, that stores time sheets per project and person. The grouping level is projectId( STRING ) , personId( STRING ) , iDate( IDate ) . IDate is a complex grouping dimension that has got three attributes ( year , month and day ). Complex dimension attributes provide aggregation levels for each subordinated dimension attribute, i.e. aggregation levels provided are year , year , month and year , month , day .
The aggregated variable is the time spent on a certain project or by a certain person or in a certain time interval.
STRUCT IDate {
INT(2) year;
INT(2) month;
INT(2) day; };
SELECT ( INT(10,2) time = sum(duration) ) HIERARCHY(SIMPLE)
FROM (TimeSheet)
GROUP BY ( STRING(10) personId = person(0).id,
STRING(10) projectId = task(0).GetProject().id,
IDate iDate = GetIDate(start) );
GetProject() provides the project a task in a hierarchical task structure belongs too. This may also be the project itself, which also is a task.
GetIDate() is a function that creates an IDate structure from a database date value.