AggregationQuery(client, query)
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. |
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 |