我一直在编写一个Python脚本,为YTD的特定视图提取GA数据.在这段时间里,我有一个机器人流量,它在视图中被过滤掉了,但在4月22日仍然有一个很好的流量块.我想使用一个段过滤器和ga:BrowServerVersion,并排除该流量.不幸的是,我遇到了以下错误:

<HttpError 400在请求https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json时返回"接收到无效的JSON有效负载.未知名称"not"at"report\u requests[0].segments[0].dynamic\u segment.user\u segment.segment\u filters[0].simple\u segment.or\u filters\u for\u segment.segment\u filter\u子句[0].dimension\u filter:找不到字段.","description":接收到无效的JSON有效负载."report\u requests[0].segments[0].dynamic\u segment.user\u segment.segment\u filters[0].simple\u segment.或segment\u filters\u for\u segment.segment\u filter\u子句[0]的未知名称"not".维度过滤器:找不到字段.">

以下是相关代码:

def get_report(analytics, start_date, end_date_delta, pageToken = None):
  """Queries the Analytics Reporting API V4.

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'pageSize': 10000,
          'pageToken': pageToken,
          'dateRanges': [{'startDate': start_date.strftime("%Y-%m-%d") , 'endDate': (start_date+end_date_delta).strftime("%Y-%m-%d")}],           
           'metrics': [{'expression': 'ga:pageviews'}, {'expression': 'ga:sessions'}, {'expression': 'ga:pageviewsPerSession'}, {'expression': 'ga:totalEvents'}, {'expression': 'ga:uniqueEvents'}, {'expression': 'ga:timeOnPage'}, {'expression': 'ga:users'}, {'expression': 'ga:newUsers'}],
           'dimensions': [{'name':'ga:date'}, {'name':'ga:sourceMedium'}, {'name':'ga:pageTitle'}, {'name':'ga:eventLabel'}, {'name':'ga:eventCategory'}, {'name':'ga:adContent'}, {'name':'ga:segment'}, {'name':'ga:campaign'}, {'name':'ga:dimension8'} ],
           'segments':[{
                'dynamicSegment':
      {
        'name': 'Apr Bot Traffic',
        'userSegment':
        {
          'segmentFilters':[
          {
            'simpleSegment':
            {
              'orFiltersForSegment':
              {
                'segmentFilterClauses': [
                {
                  'dimensionFilter':
                  {
                    'dimensionName':'ga:browserVersion',
                    'not':True,
                    'operator':'EXACT',
                    'expressions':'80.0.3987.163'
                  }
                }]
              }
            }
          }]
        }
      }
      }]
      }]
      }
  ).execute()

推荐答案

看起来SegmentDimensionFilter不支持not字段,只有DimensionFilter支持.

不过,您可以在SegmentFilter子句中使用not字段,在这种情况下也应该具有相同的效果.

Python相关问答推荐

如何在Deliveryter笔记本中从同步上下文正确地安排和等待Delivercio代码中的结果?

使用mySQL的SQlalchemy过滤重叠时间段

大Pandas 胚胎中产生组合

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

Python键入协议默认值

导入...从...混乱

使用groupby方法移除公共子字符串

Python Pandas获取层次路径直到顶层管理

合并与拼接并举

为什么'if x is None:pass'比'x is None'单独使用更快?

PYTHON、VLC、RTSP.屏幕截图不起作用

在numpy数组中寻找楼梯状 struct

判断Python操作:如何从字面上得到所有decorator ?

如何合并具有相同元素的 torch 矩阵的行?

如何从比较函数生成ngroup?

Seaborn散点图使用多个不同的标记而不是点

如何将列表从a迭代到z-以抓取数据并将其转换为DataFrame?

如何从一个维基页面中抓取和存储多个表格?

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)