AggregationQuery(client, query, explain_options=None)
An Aggregation query against the Cloud Datastore.
This class serves as an abstraction for creating aggregations over query in the Cloud Datastore.
Parameters | |
---|---|
Name | Description |
client | Client The client used to connect to Datastore. |
query | Query The query used for aggregations. |
explain_options | ExplainOptions (Optional) Options to enable query profiling for this query. When set, explain_metrics will be available on the iterator returned by query.fetch(). If not passed, will use value from given query. |
Properties
namespace
The nested query's namespace
Returns | |
---|---|
Type | Description |
str or None | the namespace assigned to this query |
project
Get the project for this AggregationQuery.
Returns | |
---|---|
Type | Description |
str | The project for the query. |
Methods
add_aggregation
add_aggregation(aggregation)
Adds an aggregation operation to the nested query
Parameter | |
---|---|
Name | Description |
aggregation | BaseAggregation An aggregation operation, e.g. a CountAggregation |
add_aggregations
add_aggregations(aggregations)
Adds a list of aggregations to the nested query
Parameter | |
---|---|
Name | Description |
aggregations | list a list of aggregation operations |
avg
avg(property_ref, alias=None)
Adds a avg over the nested query
Parameter | |
---|---|
Name | Description |
property_ref | str The property_ref for the sum |
count
count(alias=None)
Adds a count over the nested query
Parameter | |
---|---|
Name | Description |
alias | str (Optional) The alias for the count |
fetch
fetch( client=None, limit=None, eventual=False, retry=None, timeout=None, read_time=None )
Execute the Aggregation Query; return an iterator for the aggregation results.
For example:
.. testsetup:: aggregation-query-fetch
import uuid from google.cloud import datastore unique = str(uuid.uuid4())[0:8] client = datastore.Client(namespace='ns{}'.format(unique))
.. doctest:: aggregation-query-fetch
>>> andy = datastore.Entity(client.key('Person', 1234)) >>> andy['name'] = 'Andy' >>> sally = datastore.Entity(client.key('Person', 2345)) >>> sally['name'] = 'Sally' >>> bobby = datastore.Entity(client.key('Person', 3456)) >>> bobby['name'] = 'Bobby' >>> client.put_multi([andy, sally, bobby]) >>> query = client.query(kind='Andy') >>> aggregation_query = client.aggregation_query(query) >>> result = aggregation_query.count(alias="total").fetch(limit=5) >>> result <<xref uid="google.cloud.datastore.aggregation.AggregationResultIterator">google.cloud.datastore.aggregation.AggregationResultIterator</xref> object at ...>
.. testcleanup:: aggregation-query-fetch
client.delete(andy.key)
Parameters | |
---|---|
Name | Description |
client | Client (Optional) client used to connect to datastore. If not supplied, uses the query's value. |
eventual | bool (Optional) Defaults to strongly consistent (False). Setting True will use eventual consistency, but cannot be used inside a transaction or with read_time, otherwise will raise ValueError. |
retry | A retry object used to retry requests. If |
timeout | float Time, in seconds, to wait for the request to complete. Note that if |
read_time | datetime (Optional) use read_time read consistency, cannot be used inside a transaction or with eventual consistency, or will raise ValueError. |
Returns | |
---|---|
Type | Description |
| The iterator for the aggregation query. |
sum
sum(property_ref, alias=None)
Adds a sum over the nested query
Parameter | |
---|---|
Name | Description |
property_ref | str The property_ref for the sum |