Les limites et quotas suivants s'appliquent à l'API Data.
Comment les quotas s'appliquent-ils ?
Toutes les requêtes envoyées à l'API Google Analytics Data v1 nécessitent un projet Google Cloud et sont soumises aux quotas décrits sur cette page. Les quotas sont consommés quelle que soit la méthode utilisée pour identifier le projet appelant, y compris :
- Requêtes authentifiées avec des identifiants OAuth 2.0.
- Requêtes authentifiées à l'aide d'une clé API uniquement.
Les clés API permettent d'associer une requête à un projet Google Cloud spécifique à des fins de quota et de facturation. Tous les appels d'API effectués à l'aide d'identifiants ou d'une clé API de votre projet seront comptabilisés dans les quotas applicables de votre projet et de la propriété Google Analytics.
Catégories de quotas
L'API Data comporte quatre catégories de quotas de requêtes : Core, Realtime, Funnel et Chat.
Les requêtes API adressées aux méthodes Core sont facturées selon les quotas Core. Les requêtes API adressées aux méthodes Realtime sont facturées selon les quotas Realtime. Les requêtes API adressées aux méthodes Funnel sont facturées selon les quotas Funnel. Les requêtes API adressées aux méthodes Chat sont décomptées des quotas Chat. Chaque requête ne consomme qu'un seul type de quota.
| Catégorie de quota | Méthodes d'API |
|---|---|
| Core | runReport, runPivotReport, batchRunReports, batchRunPivotReports, runAccessReport, getMetadata, checkCompatibility, createAudienceExports |
| Temps réel | runRealtimeReport |
| Entonnoir | runFunnelReport |
| Chat | properties.chat |
Quotas des propriétés Analytics
Toutes les requêtes consomment des quotas de propriété.
| Nom du quota | Limite des propriétés standards | Limite des propriétés Analytics 360 |
|---|---|---|
| Jetons principaux par propriété et par jour | 200 000 | 2 000 000 |
| Jetons principaux par propriété et par heure | 40 000 | 400 000 |
| Jetons principaux par projet, par propriété et par heure | 14 000 | 140 000 |
| Requêtes simultanées principales par propriété | 10 | 50 |
| Erreurs du serveur principal par projet, par propriété et par heure | 10 | 50 |
| Jetons en temps réel par propriété et par jour | 200 000 | 2 000 000 |
| Jetons en temps réel par propriété et par heure | 40 000 | 400 000 |
| Jetons en temps réel par projet, par propriété et par heure | 14 000 | 140 000 |
| Requêtes simultanées en temps réel par propriété | 10 | 50 |
| Erreurs du serveur en temps réel par projet, par propriété et par heure | 10 | 50 |
| Jetons d'entonnoir par propriété et par jour | 200 000 | 2 000 000 |
| Jetons d'entonnoir par propriété et par heure | 40 000 | 400 000 |
| Jetons d'entonnoir par projet, par propriété et par heure | 14 000 | 140 000 |
| Requêtes simultanées d'entonnoir par propriété | 10 | 50 |
| Erreurs du serveur d'entonnoir par projet, par propriété et par heure | 10 | 50 |
| Jetons de chat par propriété et par jour | 3 750 000 | 3 750 000 |
| Jetons de chat par propriété et par heure | 500 000 | 500 000 |
- Les requêtes simultanées sont mesurées par le nombre de requêtes exécutées simultanément. Pour réduire la simultanéité de vos requêtes, attendez que les requêtes précédentes soient terminées avant d'en envoyer d'autres.
- Les erreurs du serveur sont les codes 500 et 503. Les quotas d'erreurs du serveur ne sont facturés que lorsqu'une requête entraîne une erreur du serveur. Lorsque les quotas d'erreurs du serveur sont épuisés pour une paire projet/propriété, toutes les requêtes adressées à la propriété depuis le projet sont bloquées. Pour obtenir la liste complète des réponses d'erreur, consultez Réponses d'erreur.
- Chaque requête consomme un quota de jetons par propriété et par heure, et de jetons par projet, par propriété et par heure. Cela signifie qu'une propriété doit être accessible par plus de trois projets avant que le quota "Jetons par propriété et par heure" ne soit épuisé avant le quota "Jetons par projet, par propriété et par heure".
Les propriétés sont autorisées à émettre 120 requêtes potentiellement soumises à un seuil par heure. Les dimensions userAgeBracket, userGender, brandingInterest, audienceId et audienceName sont potentiellement soumises à des seuils. Les seuils permettent d'éviter que la personne qui consulte un rapport puisse déduire les données démographiques ou les centres d'intérêt d'un utilisateur spécifique.
Quota de jetons de propriété
Des jetons sont consommés à chaque requête envoyée à l'API Google Analytics Data v1.
Le nombre de jetons facturés dépend de la complexité de la requête. La plupart des requêtes consomment 10 jetons ou moins, mais les requêtes plus complexes (comme les requêtes chat de Ask Advisor) en consomment davantage.
Facteurs qui influencent la consommation de jetons
Le coût exact en jetons d'une requête est déterminé au moment de l'exécution, ce qui rend difficile un calcul préalable précis. Le coût dépend d'une combinaison de facteurs liés à la requête elle-même et aux données sous-jacentes de la propriété Google Analytics. Ces facteurs peuvent entraîner une augmentation des coûts :
- Nombre de lignes : demander un plus grand nombre de lignes.
- Nombre de dimensions et de métriques : inclure un plus grand nombre de dimensions et de métriques.
- Complexité des filtres : utilisation d'expressions de filtre complexes.
- Durée de la plage de dates : interroger des périodes plus longues.
- Cardinalité des données : les dimensions à cardinalité élevée (nombreuses valeurs uniques, telles que
pagePath, dimensions personnalisées) peuvent augmenter considérablement le coût des jetons. - Volume d'événements de la propriété : les requêtes sur les propriétés comportant un volume d'événements plus élevé peuvent consommer plus de jetons que la même requête sur une propriété contenant moins de données.
Surveiller l'utilisation des jetons
Le moyen le plus efficace de déterminer le coût en jetons de vos appels d'API spécifiques consiste à inclure le paramètre "returnPropertyQuota": true dans le corps de la requête (compatible avec runReport, batchRunReports, runPivotReport, batchRunPivotReports, runRealtimeReport et runFunnelReport). La réponse de l'API inclura alors l'objet PropertyQuota, qui détaille les jetons consommés par cette requête spécifique et les soldes de quota restants.
Exemple de requête avec returnPropertyQuota
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [
{ "startDate": "7daysAgo", "endDate": "yesterday" }
],
"dimensions": [
{ "name": "country" }
],
"metrics": [
{ "name": "activeUsers" }
],
"returnPropertyQuota": true
}
Exemple de charge utile de réponse propertyQuota
Lorsque "returnPropertyQuota": true est défini, la réponse inclut un objet propertyQuota où chaque champ contient un QuotaStatus avec des entiers consumed et remaining :
{
"dimensionHeaders": [
{ "name": "country" }
],
"metricHeaders": [
{ "name": "activeUsers", "type": "TYPE_INTEGER" }
],
"rows": [
{
"dimensionValues": [{ "value": "United States" }],
"metricValues": [{ "value": "4820" }]
}
],
"propertyQuota": {
"tokensPerDay": {
"consumed": 1,
"remaining": 199999
},
"tokensPerHour": {
"consumed": 1,
"remaining": 39999
},
"concurrentRequests": {
"consumed": 0,
"remaining": 10
},
"serverErrorsPerProjectPerHour": {
"consumed": 0,
"remaining": 10
},
"potentiallyThresholdedRequestsPerHour": {
"consumed": 0,
"remaining": 120
},
"tokensPerProjectPerHour": {
"consumed": 1,
"remaining": 13999
}
}
}
Chaque champ de propertyQuota correspond à un quota dans les quotas de propriété Analytics. Les frais de jeton d'une seule requête API sont déduits simultanément de tokensPerDay, tokensPerHour et tokensPerProjectPerHour. S'il reste 0 dans un bucket de quota, les requêtes ultérieures envoyées à cette propriété renvoient une erreur 429 RESOURCE_EXHAUSTED.
Bonnes pratiques pour éviter les erreurs 429 RESOURCE_EXHAUSTED
- Surveillez les soldes
remainingde manière dynamique : inspectezpropertyQuota.tokensPerProjectPerHour.remainingetpropertyQuota.tokensPerHour.remainingdans les réponses, et limitez ou suspendez les tâches en arrière-plan non urgentes lorsque les jetons restants passent sous un seuil de sécurité. - Requêtes associées par lot : utilisez
batchRunReportsoubatchRunPivotReportspour regrouper jusqu'à cinq rapports dans un seul appel HTTP et réduire les frais généraux d'aller-retour HTTP (notez que chaque rapport d'un lot est toujours comptabilisé individuellement dans les quotas de jetons et deconcurrentRequests). - Réduisez la complexité et la cardinalité des requêtes : limitez les requêtes aux dimensions et métriques dont vous avez besoin, raccourcissez
dateRangesdans la mesure du possible et évitez de combiner plusieurs dimensions à cardinalité élevée (commepagePathoufullPageUrl) dans les requêtes d'interrogation fréquentes. - Contrôler la simultanéité des requêtes : mettez les requêtes en file d'attente ou limitez la taille du pool de nœuds de calcul afin que les requêtes en cours restent inférieures à la limite de
concurrentRequests(10 pour Standard, 50 pour Analytics 360). - Implémentez un intervalle exponentiel entre les tentatives avec des limites de nouvelles tentatives : si une requête échoue avec
429 RESOURCE_EXHAUSTED,500 INTERNALou503 UNAVAILABLE, réessayez en utilisant un intervalle exponentiel tronqué entre les tentatives, comme décrit dans Réponses d'erreur.
Consommation et surveillance des jetons de chat
Pour les requêtes Ask Advisor chat, les jetons représentent les coûts de calcul, de raisonnement et de récupération des données sous-jacentes du modèle. La consommation de jetons de chat est influencée par les facteurs suivants :
- Champ d'application de la requête et de l'analyse : complexité et étendue de l'analyse demandée.
- Jetons d'entrée et de sortie du modèle : volume de données contextuelles traitées et de réponses narratives générées.
- Jetons de raisonnement : étapes de raisonnement du modèle requises pour synthétiser les résultats.
- Latence d'exécution : temps de traitement requis pour les explorations de données en plusieurs étapes.
Pour surveiller l'utilisation des jetons de chat, définissez "returnPropertyQuota": true dans votre ChatRequest. La réponse inclura l'objet PropertyChatQuota contenant les champs tokensPerDay et tokensPerHour avec les soldes consommés et restants.