Filtros

Se um relatório tiver filtros e um conector da comunidade retornar dados não filtrados para todos os campos solicitados, o Data Studio aplicará filtros à resposta do conector. No entanto, os filtros podem ser aplicados no nível do conector, melhorando consideravelmente o desempenho em alguns casos. As informações do filtro são enviadas no objeto da solicitação getData(), e o conector pode usar essas detalhes para filtrar dados antes de retorná-los ao Data Studio.

Por exemplo, se você estiver se conectando a um banco de dados SQL, a aplicação dos filtros diretamente na cláusula WHERE (B3 no diagrama abaixo) poderá reduzir bastante o número de linhas retornadas. Isso, por sua vez, limita a quantidade de informações processadas e enviadas ao Data Studio (B5).

Fluxograma dos filtros

Regras de aplicação de filtros

  1. Aplique todos os filtros ou nenhum. Consulte a seção Filtros não compatíveis.
  2. Não inclua os campos forFilterOnly na resposta.
  3. AND una cada entrada na matriz request.dimensionsFilters.

    Por exemplo, no filtro a seguir, o conector só pode incluir os valores em que country seja USA E o source seja Social.

    {
          "dimensionsFilters": [
            [{
              "fieldName": "country",
              "values": ["USA"],
              "type": "INCLUDE",
              "operator": "EQUALS"
            }],
            [{
              "fieldName": "source",
              "values": ["Social"],
              "type": "INCLUDE",
              "operator": "EQUALS"
            }]
          ]
        }
        
  4. Use a fórmula OR para unir cada submatriz na matriz request.dimensionsFilters.

    Por exemplo, no filtro a seguir, o conector só pode incluir os valores em que country seja USA OU o country seja Canada.

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

Exemplo

O exemplo a seguir mostra o fluxo completo, desde o usuário do relatório definindo os filtros até o conector da comunidade retornando dados filtrados.

Exemplo de filtro

  1. O usuário do relatório configurou dois filtros:

    1. country está em IN_LIST como Canada, USA
    2. source está em IN_LIST como Social, Organic
  2. O usuário do relatório configurou um componente de gráfico com a dimensão source e a métrica sessions

  3. getData() é executado pelo Data Studio com o seguinte objeto de solicitação:

    {
          "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. O conector responde com dados filtrados.

    No exemplo de solicitação, os valores retornados para source e sessions foram country como "Canada" ou "USA" E source como "Social" ou "Organic". filtersApplied é definido como true já que todos os filtros foram aplicados com êxito.

Dados originais

Fonte Sessões País
Social 60 USA
Social 50 Canada
Social 40 UK
Organic 90 USA
Organic 80 Canada
Organic 70 UK
Newspaper 30 USA
Newspaper 20 Canada
Newspaper 10 UK

Dados filtrados

Fonte Sessões
Social 60
Social 50
Organic 90
Organic 80

Resposta do 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
    }
    

Filtros não compatíveis

Se o conector não puder aplicar todos os filtros na solicitação, a filtragem não será realizada. Retorna todos os campos solicitados (incluindo os campos forFilterOnly) e define filtersApplied na resposta como false.

Exemplo:

{
      "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
    }