Когда я запрашиваю данные из API отчетов Google Analytics, где запрос содержит
1) измерение ga:clientId
2) вчерашнюю дату в диапазоне дат
Я обнаружил, что ответ возвращает 10 001 строк данных последовательно, независимо от того, какой диапазон дат. Ниже приведен пример запроса, который должен воссоздать результаты. Я пробовал это для четырех разных аккаунтов Google и нескольких просмотров в этих аккаунтах, и у меня такое же поведение. Является ли это ожидаемым поведением?
Несколько дополнительных подробностей по этому вопросу:
1) Я публикую это сообщение в 2020-03-24, и поэтому endDate в приведенном ниже запросе вчера (2020) -03-23).
2) Для возникновения этой проблемы необходимо вернуть более 10000 строк из API. Если для рассматриваемого представления существует менее 10 000 строк, API возвращает все данные, как и ожидалось.
3) Это проблема только в том случае, если запрос выполняется примерно до 15:00 в указанную дату, 2020-03- 24 в моем случае, если он запускается примерно после 15:00, создается впечатление, что вчерашний день достаточно исторический, чтобы API работал так, как ожидалось.
request = {
'view_id': '123456789',
'dateRanges': [{'startDate': '2020-03-20', 'endDate': '2020-03-23'}],
'metrics': [
{'expression': 'ga:users'},
{'expression': 'ga:visitors'},
{'expression': 'ga:newVisits'},
{'expression': 'ga:sessions'}],
'dimensions': [
{'name': 'ga:campaign'},
{'name': 'ga:channelGrouping'},
{'name': 'ga:sourceMedium'},
{'name': 'ga:dateHourMinute'},
{'name': 'ga:country'},
{'name': 'ga:adGroup'},
{'name': 'ga:clientId'}],
'segments': [],
'samplingLevel': 'LARGE',
'pageSize': 100000
}
Этот запрос называется так:
self.batch_get_api(body={"reportRequests": [request]}).execute()
где batch_get_api - вызываемый объект:
self.reporting.reports().batchGet
self.reporting определяется как:
self.reporting = self._build_resource("analyticsreporting", "v4", credentials)
def _build_resource(service_name: str, version: str, credentials: Credentials):
return build(
service_name,
version,
http=google_auth_httplib2.AuthorizedHttp(
credentials,
http=Http(timeout=REQUEST_TIMEOUT.total_seconds())),
cache_discovery=False,
)