Фильтр API отчетов Google содержит операторы «и» и «или» - PullRequest
0 голосов
/ 26 июня 2018

, поэтому я пытаюсь преобразовать пользовательский отчет по Google Analytics в Python с помощью API Google Analytics v4. В этом отчете фильтр выглядит следующим образом:

(cond1 OR cond2 OR cond3 .. ) AND (condn OR condX ..)

В настоящее время я использую 'dimensionFilterClauses', но это позволяет только объединять фильтры одним оператором или другим:

"dimensionFilterClauses": [
        {
          "operator": 'AND',
          "filters": [
            {
              "dimensionName": "ga:browser",
              "operator": "EXACT",
              "expressions": ["Chrome"]
            }
          ]
        } 

EDIT:

Я еще немного покопался, и оказалось, что мне нужно использовать сегменты. Но я столкнулся с еще одним препятствием, поскольку они допускают только конкатенацию фильтра «ИЛИ».

Пока что это то, что я придумал (это код из примеров), когда я использую два разных сегмента, конечный результат - это два сегмента, которые можно дифференцировать с помощью дополнительного столбца. Как использовать разные фильтры в одном и том же сегменте?

"segments":[
  {
    "dynamicSegment":
    {
      "name":"Safari",
      "sessionSegment":
      {
        "segmentFilters":[
        {
          "simpleSegment":
          {
            "orFiltersForSegment":[
            {
              "segmentFilterClauses":[
              {
                "dimensionFilter":
                {
                  "dimensionName":"ga:browser",
                  "expressions":["Safari"],
                  "operator":"EXACT"
                }
              }]
            }]
          }
        }]
      }
    }
  },
  {
    "dynamicSegment":
    {
      "name":"United States",
      "sessionSegment":
      {
        "segmentFilters":[
        {
          "simpleSegment":
          {
            "orFiltersForSegment":[
            {
              "segmentFilterClauses":[
              {
                "dimensionFilter":
                {
                  "dimensionName":"ga:country",
                  "expressions":["United States"],
                  "operator":"EXACT"
                }
              }]
            }]
          }
        }]
      }
    }
  }]

1 Ответ

0 голосов
/ 27 июня 2018

Я наконец понял это. Это из документации API:

segmentFilters[]: A segment is defined by a set of segment filters which are combined together with a logical AND operation

Все, что мне нужно сделать, это объединить два сегмента в один сегмент, добавив фильтры ИЛИ в список сегментFilters:

segments = [
{
    "dynamicSegment":
    {
        "name":"Combined",
        "sessionSegment":
        {
            "segmentFilters":[
            {
                "simpleSegment":
                {
                    "orFiltersForSegment":[
                    {
                        "segmentFilterClauses":[
                        {
                            "dimensionFilter":
                            {
                                "dimensionName":"ga:browser",
                                "expressions":["whatever you need 1"],
                                "operator":"EXACT"
                            }
                        }, {    # OR 
                            "dimensionFilter":
                            {
                                "dimensionName":"ga:browser",
                                "expressions":[" or whatever you need 2"],
                                "operator":"EXACT"
                            }
                        }]
                    }, {   # AND 
                    "segmentFilters":[
                    {
                    "simpleSegment":
                    {
                        "orFiltersForSegment":[
                        {
                            "segmentFilterClauses":[
                            {
                                "dimensionFilter":
                                {
                                    "dimensionName":"ga:country",
                                    "expressions":["whatever you need as need 3"],
                                    "operator":"EXACT"
                                }, {   # OR 
                                "dimensionFilter":
                                {
                                    "dimensionName":"ga:country",
                                    "expressions":["or whatever you need as need 4"],
                                    "operator":"EXACT"
                                }
                            }]
                        }]
                    }
                }]]
            }
        }]
    }
}
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...