Exécute une requête d'agrégation.
Plutôt que de produire des résultats Document
comme Firestore.RunQuery
, cette API permet d'exécuter une agrégation pour produire une série de résultats AggregationResult
côté serveur.
Exemple général:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
Requête HTTP
POST https://firestore.googleapis.com/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery
L'URL utilise la syntaxe de transcodage gRPC.
Paramètres de chemin d'accès
Paramètres | |
---|---|
parent |
Obligatoire. Nom de la ressource parente. Format à respecter: |
Corps de la requête
Le corps de la requête contient des données présentant la structure suivante :
Représentation JSON |
---|
{ "explainOptions": { object ( |
Champs | |
---|---|
explainOptions |
Facultatif. Expliquez les options de la requête. Si cette option est définie, des statistiques de requête supplémentaires sont renvoyées. Si ce n'est pas le cas, seuls les résultats de la requête seront renvoyés. |
Champ d'union query_type . Requête à exécuter. query_type ne peut être qu'un des éléments suivants : |
|
structuredAggregationQuery |
Une requête d'agrégation. |
Champ d'union consistency_selector . Par défaut, le mode de cohérence de la requête est une cohérence forte. consistency_selector ne peut être qu'un des éléments suivants : |
|
transaction |
Exécutez l'agrégation dans une transaction déjà active. La valeur ici est l'ID de transaction opaque dans lequel exécuter la requête. Chaîne encodée en base64. |
newTransaction |
Démarre une nouvelle transaction dans le cadre de la requête, en lecture seule par défaut. Le nouvel ID de transaction est renvoyé en tant que première réponse dans le flux. |
readTime |
Exécute la requête à l'horodatage donné. Il doit s'agir d'un horodatage de précision de l'ordre de la microseconde au cours de la dernière heure. Si la récupération à un moment précis est activée, il peut également s'agir d'un horodatage d'une minute entière datant des sept derniers jours. Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
Corps de la réponse
Réponse pour Firestore.RunAggregationQuery
.
Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :
Représentation JSON |
---|
{ "result": { object ( |
Champs | |
---|---|
result |
Résultat d'agrégation unique. Indisponible lorsque vous signalez une progression partielle. |
transaction |
Transaction démarrée dans le cadre de cette requête. Présent uniquement dans la première réponse lorsque la requête a demandé le lancement d'une nouvelle transaction. Chaîne encodée en base64. |
readTime |
Heure à laquelle le résultat agrégé a été calculé. Ce nombre augmente toujours de manière monotone. Dans ce cas, il est garanti que l'élément AggregationResult précédent dans le flux de résultats n'a pas changé entre leur Si la requête ne renvoie aucun résultat, une réponse contenant Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
explainMetrics |
Métriques d'explication des requêtes. Il n'est présent que lorsque le |
Champs d'application des autorisations
Nécessite l'un des champs d'application OAuth suivants :
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Pour en savoir plus, consultez la page Présentation de l'authentification.
StructuredAggregationQuery
Requête Firestore permettant d'exécuter une agrégation sur un StructuredQuery
.
Représentation JSON |
---|
{ "aggregations": [ { object ( |
Champs | |
---|---|
aggregations[] |
Facultatif. Série d'agrégations à appliquer aux résultats de Configuration requise:
|
Champ d'union query_type . Requête de base sur laquelle effectuer l'agrégation. query_type ne peut être qu'un des éléments suivants : |
|
structuredQuery |
Requête structurée imbriquée. |
Agrégation
Définit une agrégation qui produit un seul résultat.
Représentation JSON |
---|
{ "alias": string, // Union field |
Champs | |
---|---|
alias |
Facultatif. Nom facultatif du champ dans lequel stocker le résultat de l'agrégation. Si ce champ n'est pas fourni, Firestore choisit un nom par défaut au format
devient:
Configuration requise:
|
Champ d'union operator . Type d'agrégation à effectuer (obligatoire). operator ne peut être qu'un des éléments suivants : |
|
count |
Agrégateur de nombres. |
sum |
Agrégateur de somme. |
avg |
Agrégateur moyen. |
Nombre
Nombre de documents correspondant à la requête.
La fonction d'agrégation COUNT(*)
opère sur l'ensemble du document. Elle ne nécessite donc pas de référence de champ.
Représentation JSON |
---|
{ "upTo": string } |
Champs | |
---|---|
upTo |
Facultatif. Contrainte facultative sur le nombre maximal de documents à compter. Vous pouvez ainsi limiter le nombre de documents à analyser, et limiter la latence et les coûts. "Non spécifié" est interprété comme étant sans limite. Exemple général:
Configuration requise:
|
pondérée
Somme des valeurs du champ demandé.
Seules les valeurs numériques seront agrégées. Toutes les valeurs non numériques, y compris
NULL
, sont ignorées.Si les valeurs agrégées contiennent
NaN
, renvoieNaN
. Les calculs de l'infinité sont conformes aux normes IEEE-754.Si l'ensemble de valeurs agrégées est vide, renvoie 0.
Renvoie un entier de 64 bits si tous les nombres agrégés sont des entiers et que la somme ne déborde pas. Sinon, le résultat est renvoyé sous forme de double. Notez que même si toutes les valeurs agrégées sont des entiers, le résultat est renvoyé en tant que double s'il ne peut pas tenir dans un entier signé de 64 bits. Dans ce cas, la valeur renvoyée perd la précision.
En cas de dépassement de capacité négatif, l'agrégation à virgule flottante est non déterministe. Cela signifie que l'exécution répétée d'une même requête sans modifier les valeurs sous-jacentes peut produire des résultats légèrement différents à chaque fois. Dans ce cas, les valeurs doivent être stockées sous forme d'entiers et de nombres à virgule flottante.
Représentation JSON |
---|
{
"field": {
object ( |
Champs | |
---|---|
field |
Champ à utiliser pour l'agrégation. |
Moy
Moyenne des valeurs du champ demandé.
Seules les valeurs numériques seront agrégées. Toutes les valeurs non numériques, y compris
NULL
, sont ignorées.Si les valeurs agrégées contiennent
NaN
, renvoieNaN
. Les calculs de l'infinité sont conformes aux normes IEEE-754.Si l'ensemble de valeurs agrégées est vide, renvoie
NULL
.Renvoie toujours le résultat sous la forme d'un double.
Représentation JSON |
---|
{
"field": {
object ( |
Champs | |
---|---|
field |
Champ à utiliser pour l'agrégation. |
AggregationResult
Résultat d'un seul bucket à partir d'une requête d'agrégation Firestore.
Les clés de aggregateFields
sont les mêmes pour tous les résultats d'une requête d'agrégation, contrairement aux requêtes de document, qui peuvent comporter des champs différents pour chaque résultat.
Représentation JSON |
---|
{
"aggregateFields": {
string: {
object ( |
Champs | |
---|---|
aggregateFields |
Résultat des fonctions d'agrégation, par exemple: La clé est la Objet contenant une liste de paires |