如何从Google Analytics Reporting API v4 Python获取前50个会话

时间:2018-08-21 10:32:19

标签: python python-3.x google-analytics google-analytics-api

我在Python中有一个分析报告api v4脚本,该脚本向我返回了某些登陆页面的会话以及会话来自哪个城市。

是否有一种方法可以将其限制为每个登陆页面仅能访问会话的前50个城市,这样我就不会得到正在登陆的城市(例如有1个会话)的返回信息。

以下是分析请求的基本代码:

[v0][v1][v2][v3]concat=n=4:unsafe=1

1 个答案:

答案 0 :(得分:0)

编辑-要通过单个查询获取特定着陆页的x个热门城市不可行,您将不得不使用内容分组功能或处理更广泛的响应以实现这个。

原始回复- 添加到您的代码中可能并不完整,请仅添加添加的metricFilterClauses部分

通过使用分页和使用PageSize来限制获得的行数,您可以获得前50个结果。只需在应用分页之前使用ordering进行排序即可。

您将必须使用batchGet request来执行此操作-link to official guide of 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过滤出所需的特定指标。您可以使用different operators available根据要使用的条件进行过滤。