Class AggregationQuery

  • All Implemented Interfaces:
    Serializable

    public class AggregationQuery
    extends Query<AggregationResults>
    An implementation of a Google Cloud Datastore Query that returns AggregationResults, It can be constructed by providing a nested query (StructuredQuery or GqlQuery) to run the aggregations on and a set of Aggregation.

    StructuredQuery example:

    
     EntityQuery selectAllQuery = Query.newEntityQueryBuilder()
        .setKind("Task")
        .build();
     AggregationQuery aggregationQuery = Query.newAggregationQueryBuilder()
        .addAggregation(count().as("total_count"))
        .over(selectAllQuery)
        .build();
     AggregationResults aggregationResults = datastore.runAggregation(aggregationQuery);
     for (AggregationResult aggregationResult : aggregationResults) {
         System.out.println(aggregationResult.get("total_count"));
     }
     

    GqlQuery example:

    
     GqlQuery<?> selectAllGqlQuery = Query.newGqlQueryBuilder(
             "AGGREGATE COUNT(*) AS total_count, COUNT_UP_TO(100) AS count_upto_100 OVER(SELECT * FROM Task)"
         )
         .setAllowLiteral(true)
         .build();
     AggregationQuery aggregationQuery = Query.newAggregationQueryBuilder()
         .over(selectAllGqlQuery)
         .build();
     AggregationResults aggregationResults = datastore.runAggregation(aggregationQuery);
     for (AggregationResult aggregationResult : aggregationResults) {
       System.out.println(aggregationResult.get("total_count"));
       System.out.println(aggregationResult.get("count_upto_100"));
     }
     
    See Also:
    Datastore queries, Serialized Form