У меня есть сценарий api v4 для аналитики отчетов на Python, который возвращает мне сеансы для определенных целевых страниц и город, из которого они были получены.
Есть ли способ ограничить это только 50 верхними местоположениями городов на целевую страницу для сеансов, чтобы мне не возвращались города, которые приземляются на них, например, для 1 сеанса.
Вот базовый код для запроса аналитики:
api_client = google_build(serviceName=api_name, version=api_version,
http=authorized)
for i in developments:
sample_request = {
'viewId': '6690350',
'pageSize': 100000,
'dateRanges': {
'startDate': datetime.strftime(datetime.now() - timedelta(days = 30),'%Y-%m-%d'),
'endDate': datetime.strftime(datetime.now(),'%Y-%m-%d')
},
'metrics': [{'expression': 'ga:sessions'}],
'orderBys':
[
{'fieldName': 'ga:pagePath', 'sortOrder': 'ASCENDING'},
{'fieldName': 'ga:sessions', 'sortOrder': 'DESCENDING'}
],
'dimensions': [{'name': 'ga:pagePath'},{'name': 'ga:city'},{'name': 'ga:latitude'},{'name': 'ga:longitude'}],
'dimensionFilterClauses' : [
{
Я думал об этом, но не совсем уверен, как поступить в моей ситуации.






РЕДАКТИРОВАТЬ - Получить лучшие города x для конкретной целевой страницы невозможно с помощью одного запроса, вам придется либо использовать функцию группировки контента, либо обрабатывать более широкий ответ для достижения этой цели.
Оригинальный ответ - Добавление в ваш код может быть неполным, посмотрите только добавленный раздел metricFilterClauses
Вы можете получить 50 лучших результатов, используя разбиение на страницы и используя PageSize для ограничения количества получаемых строк. Просто убедитесь, что вы используете ordering для сортировки, прежде чем применять разбиение на страницы.
Вам нужно будет использовать batchGet request для выполнения этого - ссылка на официальное руководство по batchquest
api_client = google_build(serviceName=api_name, version=api_version,
http=authorized)
for i in developments:
sample_request = {
'viewId': '6690350',
'pageSize': 100000,
'dateRanges': {
'startDate': datetime.strftime(datetime.now() - timedelta(days = 30),'%Y-%m-%d'),
'endDate': datetime.strftime(datetime.now(),'%Y-%m-%d')
},
'metrics': [{'expression': 'ga:sessions'}],
#add this metric filter to filter out with session more than 50
'metricFilterClauses': [{
"filters": [{
"metricName": "ga:sessions",
"operator": "GREATER_THAN",
"comparisonValue": "50"
}]
}]
'orderBys':
[
{'fieldName': 'ga:pagePath', 'sortOrder': 'ASCENDING'},
{'fieldName': 'ga:sessions', 'sortOrder': 'DESCENDING'}
],
'dimensions': [{'name': 'ga:pagePath'},{'name': 'ga:city'},{'name': 'ga:latitude'},{'name': 'ga:longitude'}]
#top 50 results
'pageSize': 50
Вы можете использовать MetricFilterClauses, чтобы отфильтровать конкретную метрику, которая вам нужна. Вы можете использовать доступны разные операторы для фильтрации на основе условий, которые вы хотите использовать.
Привет, это не то, на что я надеялся. Здесь показаны города, в которых было более 50 сеансов. Но я пытаюсь экспортировать 50 лучших городов, которые предоставили сеансы, на целевые страницы.
отредактировал ответ для PageSize, вы можете ограничить количество строк до 50 с заказом, чтобы получить его
Проблема с редактированием заключается в том, что он просто отбрасывает 50 результатов, но я хочу получить 50 лучших сеансов для КАЖДОЙ целевой страницы. К сожалению, это изменение ограничивает его до 50 лучших сеансов в целом, которые останавливаются только на первой целевой странице.
Я думаю, что это невозможно в одном запросе, это может быть достигнуто путем группировки контента или выполнения нескольких запросов или обработки общего ответа.
вы пробовали добавить фильтр? developers.google.com/analytics/devguides/reporting/core/v4/…