Задать вопрос
@arrexq

Как фильтровать по dimensions (ga api)?

Здравствуйте, подскажите пожалуйста. Есть запрос с фильтром по metrics. Он работает и все отдает.
DIMENSIONS = ['ga:source','ga:medium']
METRICS = ['ga:users','ga:sessions','ga:adCost']

def initialize_analyticsreporting():
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics


def get_report(analytics):
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '14daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression':i} for i in METRICS],
          'dimensions': [{'name':j} for j in DIMENSIONS],
          "metricFilterClauses": # Описание фильтра
      [
        {
          "filters": 
          [
            {
              "metricName": "ga:adCost",
              "operator": "GREATER_THAN", # Значение показателя должно быть больше comparisonValue.
              "comparisonValue": "0"
            }
          ]
        }
      ]
        }]
      }
  ).execute()


Но когда я пытаюсь выставить фильтр, например, по ga:source
DIMENSIONS = ['ga:source']
METRICS = ['ga:users']

def initialize_analyticsreporting():
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics


def get_report(analytics):
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '14daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression':i} for i in METRICS],
          'dimensions': [{'name':j} for j in DIMENSIONS],
          "metricFilterClauses": # Описание фильтра 
      [
        {
          "filters": 
          [
            {
              "dimensionName": "ga:source",
              "operator": "EXACT",
              "expressions": ["google"]
            }
          ]
        }
      ]
        }]
      }
  ).execute()


То выдает ошибку:
Invalid value at 'report_requests[0].metric_filter_clauses[0].filters[0].operator' (TYPE_ENUM), "EXACT"
Invalid JSON payload received. Unknown name "expressions" at 'report_requests[0].metric_filter_clauses[0].filters[0]': Cannot find field.">

Подскажите в чем может быть проблема. В итоге по любым показателям фильтр работает, по любым параметрам нет.
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
проверяйте через тестилку, возвращается ли что-то вообще

нужно понимать, что Гугл не дает данных, угрожающих его бизнес-модели

например, нельзя получить стоимость клика конкретного юзера из конкретной страны по конкретному запросу
по сумме - сколько угодно: все клики из USA, все клики по запросу, все клики от EN, суммируй - дели как хочешь...

так что не все желаемые фильтры работают, даже если кажется что должны
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@JohnnyBravo7
аналитика, маркетинг, python, js, google script
Ну так всё просто жеж. API не может достать вам такие значения, т.к. referral это medium :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы