Для Data API действуют следующие ограничения и квоты.
Как применяются квоты
Для всех запросов к Google Analytics Data API версии 1 требуется проект Google Cloud. На них распространяются квоты, описанные на этой странице. Квоты расходуются независимо от метода, используемого для идентификации вызывающего проекта, в том числе:
- Запросы, аутентифицированные с помощью учетных данных OAuth 2.0.
- Запросы, аутентифицированные только с помощью ключа API.
Ключи API используются для связывания запроса с определенным проектом Google Cloud в целях учета квот и оплаты. Все вызовы API, выполненные с использованием учетных данных или ключа API из вашего проекта, будут учитываться в квотах проекта и ресурса Google Аналитики.
Категории квот
В Data API есть четыре категории квот на запросы: Core, Realtime, Funnel и Chat.
Запросы к API, в которых используются основные методы, расходуют основные квоты. Запросы к методам Realtime API расходуют квоты Realtime. Запросы к API для методов воронки расходуют квоты воронки. Запросы к API для методов Chat расходуют квоты Chat. Каждый запрос расходует только один тип квоты.
| Категория квоты | Методы API |
|---|---|
| Core | runReport, runPivotReport, batchRunReports, batchRunPivotReports, runAccessReport, getMetadata, checkCompatibility, createAudienceExports |
| В реальном времени | runRealtimeReport |
| Воронка | runFunnelReport |
| Чат | properties.chat |
Квоты для ресурсов Аналитики
Все запросы расходуют квоты ресурсов.
| Название квоты | Ограничение для стандартного ресурса | Ограничения для ресурсов Аналитики 360 |
|---|---|---|
| Основные токены на ресурс в день | 200 000 | 2 000 000 |
| Токены для основных методов на один ресурс в час | 40 000 | 400 000 |
| Токены для основных методов на один проект в одном ресурсе в час | 14 000 | 140 000 |
| Параллельных запросов на ресурс (основные) | 10 | 50 |
| Ошибки сервера на проект в одном ресурсе в час | 10 | 50 |
| Токены в реальном времени на ресурс в день | 200 000 | 2 000 000 |
| Токены в реальном времени на ресурс в час | 40 000 | 400 000 |
| Токены для запросов в реальном времени на один проект в одном ресурсе в час | 14 000 | 140 000 |
| Параллельных запросов на ресурс в реальном времени. | 10 | 50 |
| Ошибки сервера в реальном времени на проект на ресурс в час | 10 | 50 |
| Токены воронки на ресурс в день | 200 000 | 2 000 000 |
| Токены воронки на ресурс в час | 40 000 | 400 000 |
| Токены воронки на проект в одном ресурсе в час | 14 000 | 140 000 |
| Параллельные запросы последовательности на ресурс. | 10 | 50 |
| Ошибки сервера воронки на один проект в одном ресурсе в час. | 10 | 50 |
| Токены чата на ресурс в день | 3 750 000 | 3 750 000 |
| Токены чата на один ресурс в час | 500 000 | 500 000 |
- Параллельные запросы измеряются количеством запросов, выполняемых одновременно. Чтобы снизить количество параллельных запросов, дождитесь завершения предыдущих запросов, прежде чем отправлять новые.
- Ошибки сервера – это коды 500 и 503. Квота на ошибки сервера расходуется только в том случае, если запрос приводит к ошибке сервера. Когда квота на ошибки сервера для пары "проект – ресурс" исчерпана, все запросы к ресурсу из проекта блокируются. Полный список сообщений об ошибках приведен в этой статье.
- Каждый запрос расходует квоту как для токенов на ресурс в час, так и для токенов на проект в ресурсе в час. Это означает, что к одному ресурсу должны обратиться более трех проектов, чтобы квота "Токены на один ресурс в час" была исчерпана раньше, чем квота "Токены на один проект в одном ресурсе в час".
Для ресурсов разрешено 120 потенциально пороговых запросов в час. Для параметров userAgeBracket, userGender, brandingInterest, audienceId и audienceName могут применяться пороговые объемы данных. При показе данные о возрасте, поле и категориях интересов могут применяться пороговые значения.
Квота на токены ресурса
Токены расходуются при каждом запросе к Google Analytics Data API версии 1.
Количество списанных токенов зависит от сложности запроса. Для большинства запросов используется не более 10 токенов, но для более сложных, например запросов к Ask Advisor chat, может потребоваться больше.
Факторы, влияющие на расход токенов
Точная стоимость запроса в токенах определяется во время выполнения, поэтому ее сложно рассчитать заранее. Стоимость зависит от ряда факторов, связанных с самим запросом и данными в ресурсе Google Аналитики. Вот что может привести к увеличению расходов:
- Количество строк. Запросите большее количество строк.
- Количество параметров и показателей. Чем больше параметров и показателей вы добавите,
- Сложность фильтров. Использование сложных выражений фильтров.
- Продолжительность диапазона дат. Запрос данных за более длительный период.
- Количество уникальных значений. Параметры с большим количеством уникальных значений (например,
pagePathили специальные параметры) могут значительно увеличить стоимость в токенах. - Объем событий в ресурсе. Запросы к ресурсам с большим объемом событий могут использовать больше токенов, чем те же запросы к ресурсам с меньшим объемом данных.
Как отслеживать использование токенов
Самый эффективный способ определить стоимость токенов для конкретных вызовов API – включить параметр "returnPropertyQuota": true в тело запроса (поддерживается в runReport, batchRunReports, runPivotReport, batchRunPivotReports, runRealtimeReport и runFunnelReport). В этом случае ответ API будет содержать объект PropertyQuota с подробными сведениями о токенах, использованных для этого запроса, и оставшихся квотах.
Пример запроса с параметром 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
}
Пример полезной нагрузки ответа propertyQuota
Если задан параметр "returnPropertyQuota": true, ответ включает объект propertyQuota, в котором каждое поле содержит объект QuotaStatus с целыми числами consumed и 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
}
}
}
Каждое поле в propertyQuota соответствует квоте в квотах ресурсов Аналитики. Стоимость токена за один запрос к API вычитается одновременно из tokensPerDay, tokensPerHour и tokensPerProjectPerHour. Если в каком-либо сегменте квоты осталось 0 токенов, последующие запросы к этому ресурсу будут возвращать ошибку 429 RESOURCE_EXHAUSTED.
Рекомендации по предотвращению ошибок 429 RESOURCE_EXHAUSTED
- Динамически отслеживайте баланс
remaining. Проверяйте значенияpropertyQuota.tokensPerProjectPerHour.remainingиpropertyQuota.tokensPerHour.remainingв ответах и ограничивайте или приостанавливайте несрочные фоновые задачи, когда количество оставшихся токенов падает ниже безопасного порога. - Пакетная обработка связанных запросов. Используйте
batchRunReportsилиbatchRunPivotReports, чтобы сгруппировать до пяти отчетов в одном HTTP-вызове и сократить время приема-передачи HTTP. Обратите внимание, что каждый отчет в пакете по-прежнему учитывается отдельно в квотах на токены иconcurrentRequests. - Уменьшите сложность запросов и количество уникальных значений. Ограничьте запросы только необходимыми параметрами и показателями, по возможности сократите
dateRangesи не объединяйте несколько параметров с большим количеством уникальных значений (например,pagePathилиfullPageUrl) в частых запросах. - Контролируйте параллельные запросы. Помещайте запросы в очередь или ограничьте размер пула рабочих процессов, чтобы количество выполняемых запросов не превышало
concurrentRequests(10 для стандартной версии и 50 для Аналитики 360). - Используйте экспоненциальную выдержку с ограничением на количество повторных попыток. Если запрос возвращает ошибку
429 RESOURCE_EXHAUSTED,500 INTERNALили503 UNAVAILABLE, повторите его, используя усеченную экспоненциальную выдержку, как описано в разделе Ответы с ошибками.
Использование и мониторинг токенов Chat
Для запросов Ask Advisor chat токены представляют собой стоимость вычислений, рассуждений и извлечения базовых данных. На использование токенов в Chat влияют:
- Область запроса и анализа. Сложность и широта запрашиваемого анализа.
- Токены ввода и вывода модели. Объем обработанных контекстных данных и сгенерированных ответов.
- Токены мышления. Этапы рассуждения модели, необходимые для обобщения результатов.
- Задержка выполнения. Время, необходимое для обработки многоэтапных исследований данных.
Чтобы отслеживать использование токенов чата, задайте "returnPropertyQuota": true в ChatRequest. В ответе будет объект PropertyChatQuota с полями tokensPerDay и tokensPerHour, в которых указаны использованные и оставшиеся токены.