Фильтры

Если отчет содержит фильтры и соединитель сообщества возвращает нефильтрованные данные для всех запрошенных полей, Looker Studio применит фильтры к ответу соединителя. Однако фильтры можно применять на уровне соединителя сообщества, что в некоторых случаях может значительно повысить производительность. Информация о фильтре передается в объекте запроса getData() , и соединитель может использовать эту информацию для фильтрации данных перед отправкой их обратно в Looker Studio.

Например, если вы подключаетесь к базе данных SQL, применение фильтров непосредственно в предложении WHERE (B3 на диаграмме ниже) может значительно уменьшить количество строк, возвращаемых в Looker Studio. Это, в свою очередь, ограничивает объем данных, которые необходимо обработать и отправить в Looker Studio (B5).

Filter flowchart

Правила применения фильтров

  1. Примените все фильтры или ни один из них. См. Неподдерживаемые фильтры.
  2. Не включайте в ответ поля forFilterOnly .
  3. AND вместе каждую запись в массиве request.dimensionsFilters .

    Например, для следующего фильтра соединитель должен включать только значения, в которых указана country USA И source Social .

    {
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["USA"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }],
        [{
          "fieldName": "source",
          "values": ["Social"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }]
      ]
    }
    
  4. OR вместе каждый подмассив в массиве request.dimensionsFilters .

    Например, для следующего фильтра соединитель должен включать только значения, в которых указана country USA ИЛИ country Canada .

    {
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["Canada"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }, {
          "fieldName": "country",
          "values": ["USA"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }]
      ]
    }
    

Пример

В следующем примере показан сквозной поток от пользователя отчета, определяющего фильтры, до соединителя сообщества, возвращающего отфильтрованные данные.

Пример фильтра

  1. Пользователь отчета настроил два фильтра:

    1. country входит в IN_LIST Canada, USA
    2. source : IN_LIST Social, Organic
  2. Пользователь отчета настроил компонент диаграммы с source измерением и показателем sessions .

  3. getData() выполняется Looker Studio со следующим объектом запроса:

    {
      "fields": [
        {"name": "source"},
        {"name": "sessions"},
        {"name": "country", "forFilterOnly": true}
      ],
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["Canada", "USA"],
          "type": "INCLUDE",
          "operator": "IN_LIST"
        }],
        [{
          "fieldName": "source",
          "values": ["Social", "Organic"],
          "type": "INCLUDE",
          "operator": "IN_LIST"
        }]
      ]
    }
    
  4. Коннектор отвечает отфильтрованными данными.

    Для примера запроса верните source и sessions , где country"Canada" или "USA" , А source"Social" или "Organic" . Установите для filtersApplied значение true , поскольку все фильтры можно было успешно применить.

Исходные данные

источник сессии страна
Социальное 60 США
Социальное 50 Канада
Социальное 40 Великобритания
Органический 90 США
Органический 80 Канада
Органический 70 Великобритания
Газета 30 США
Газета 20 Канада
Газета 10 Великобритания

Отфильтрованные данные

источник сессии
Социальное 60
Социальное 50
Органический 90
Органический 80

getData() ответ

{
  "schema": [
    {"name": "source",   "dataType": "STRING"},
    {"name": "sessions", "dataType": "NUMBER"},
  ],
  "rows": [
    {"values": ["Social", 60]},
    {"values": ["Social", 50]},
    {"values": ["Organic", 90]},
    {"values": ["Organic", 80]}
  ],
  "filtersApplied": true
}

Неподдерживаемые фильтры

Если соединитель не может применить все фильтры в запросе, фильтрация выполняться не должна. Верните все запрошенные поля (включая поля forFilterOnly ) и установите для ключа filtersApplied в своем ответе значение false .

Пример:

{
  "schema": [
    {"name": "source",   "dataType": "STRING"},
    {"name": "sessions", "dataType": "NUMBER"},
    {"name": "country",  "dataType": "STRING"}
  ],
  "rows": [
    {"values": ["Social", 60, "USA"]},
    {"values": ["Social", 50, "Canada"]},
    {"values": ["Social", 40, "UK"]},
    {"values": ["Organic", 90, "USA"]},
    {"values": ["Organic", 80, "Canada"]},
    {"values": ["Organic", 70, "UK"]},
    {"values": ["Newspaper", 30, "USA"]},
    {"values": ["Newspaper", 20, "Canada"]},
    {"values": ["Newspaper", 10, "UK"]},
  ],
  "filtersApplied": false
}