Ограничения и квоты Data API

Для 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, в которых указаны использованные и оставшиеся токены.