代码之家  ›  专栏  ›  技术社区  ›  pavlov

Python中Google Analytics API中通过自定义维度进行正则表达式过滤

  •  1
  • pavlov  · 技术社区  · 7 年前

    我正在查询Python 2.7中的Google分析API。下面是两个代码示例。第一个可行,但不涉及我想做的过滤。第二段代码不起作用,但表示我尝试根据自定义GA维度的内容过滤结果,在本例中,这是指页面是否包含自定义GA标记。

    这就是我查询GA API的方式,它可以工作,但不涉及我需要的过滤:

    import datetime
    import time
    from datetime import timedelta
    
    # get start and end dates in correct format
    start_date = d1.strftime('%Y-%m-%d')
    end_date   = d2.strftime('%Y-%m-%d')
    
    # Create ReportRequest object
    response = service.reports().batchGet(
        body={
            'reportRequests': [
                {
                    'viewId': 'ga:32981293',
    
                    'dateRanges': [{'startDate': start_date, 'endDate': end_date}],
    
                    'metrics': [{'expression': 'ga:sessions'},
                                {'expression': 'ga:pageviews'},
                                {'expression': 'ga:users'},
                                {'expression': 'ga:exits'},
                                {'expression': 'ga:avgSessionDuration'},
                                {'expression': 'ga:avgTimeonPage'},
                                {'expression': 'ga:sessionsPerUser'},
                                {'expression': 'ga:percentNewSessions'},
                                {'expression': 'ga:bounceRate'}],
    
                    'dimensions': [{"name": "ga:pagePath"}],
    
                    'orderBys': [{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}],
    
                    'pageSize': 500
    
                }]
        }
    ).execute()
    

    因此,上面可以给我一个对象,根据页面浏览量对页面路径进行排序,我得到了我要求的相关指标。

    我想做的是添加一个过滤器,这样我只能获得包含特定标记的页面路径的信息。在本例中,我有一个称为“新闻页面标记”的自定义GA维度,我只想获取具有特定新闻页面标记的页面路径的信息。

    这里有一个尝试,但没有成功。我希望有人能帮我解决一些语法问题。

    import datetime
    import time
    from datetime import timedelta
    
    # get start and end dates in correct format
    start_date = d1.strftime('%Y-%m-%d')
    end_date   = d2.strftime('%Y-%m-%d')
    
    cur_tag = 'example string'
    
    # Create ReportRequest object
    response = service.reports().batchGet(
        body={
            'reportRequests': [
                {
                    'viewId': 'ga:32981293',
    
                    'dateRanges': [{'startDate': start_date, 'endDate': end_date}],
    
                    'metrics': [{'expression': 'ga:sessions'},
                                {'expression': 'ga:pageviews'},
                                {'expression': 'ga:users'},
                                {'expression': 'ga:exits'},
                                {'expression': 'ga:avgSessionDuration'},
                                {'expression': 'ga:avgTimeonPage'},
                                {'expression': 'ga:sessionsPerUser'},
                                {'expression': 'ga:percentNewSessions'},
                                {'expression': 'ga:bounceRate'}],
    
                    'dimensions': [{"name": "ga:pagePath"},
                                   {"name": "ga:newsPageTags"}],
    
                    'orderBys': [{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}],
    
                    'dimensionFilterClauses': [
                                {"filters": [{"dimensionName": "ga:newsPageTags",
                                              "operator": "REGEXP",
                                              "expressions": [cur_tag]}]
                                }
                                            ],  
    
                    'pageSize': 500
    
                }]
        }
    ).execute()
    

    因此,在上面,我添加了“ga:newsPageTags”作为第二维度,目的是过滤页面,以便我只获得具有“cur_标记”作为其新闻页面标记之一的页面的指标。

    使用过滤器运行第二段代码会产生以下错误:

    回溯(最近一次呼叫最后一次): 文件“”,第31行,in 文件“build/bdist.macosx-10.7-x86_64/egg/oauth2client/u helpers.py”,第133行,在位置包装器中 文件“build/bdist.macosx-10.7-x86_64/egg/googleapiclient/http.py”,第842行,执行 GoogleAppClient。错误。HttpError:https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json返回“未知维度:ga:newsPageTags 有关详细信息,请参阅 https://developers.google.com/analytics/devguides/reporting/core/dimsmets .“>

    显然,我没有正确指定自定义维度,我希望有一种方法可以查询GA API以根据自定义标记进行过滤,尽管我还没有找到好的文档来帮助我解决这个问题。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   Joe Law    7 年前

    API中的自定义维度由数字而不是名称指定。例如,你可以通过 ga:dimension15 而不是 ga:newsPageTags

    https://developers.google.com/analytics/devguides/reporting/core/dimsmets#view=detail&group=custom_variables_or_columns