Filtros

Si un informe contiene filtros y un conector comunitario devuelve datos sin filtrar de todos los campos solicitados, Data Studio aplicará filtros a la respuesta del conector. Sin embargo, los filtros se pueden aplicar a nivel del conector comunitario, lo que puede mejorar significativamente el rendimiento en algunos casos. La información de filtro se transfiere al objeto de solicitud getData() y el conector puede usar esta información para filtrar datos antes de enviarla nuevamente a Data Studio.

Por ejemplo, si conectas con una base de datos SQL y aplicas los filtros directamente en la cláusula WHERE (B3, en el diagrama que se muestra a continuación), el número de filas devueltas a Data Studio podría reducirse considerablemente. Esto, a su vez, limita la cantidad de datos que deben procesarse y enviarse a Data Studio (B5).

Diagrama de flujo de filtros

Reglas para aplicar filtros

  1. Aplica todos los filtros o ninguno. Consulta Filtros no admitidos.
  2. No incluyas campos forFilterOnly en la respuesta.
  3. Combina mediante AND todas las entradas de la matriz request.dimensionsFilters.

    Por ejemplo, para el siguiente filtro, el conector solo debe incluir valores donde el campo country es USA Y donde el campo source es Social.

    {
          "dimensionsFilters": [
            [{
              "fieldName": "country",
              "values": ["USA"],
              "type": "INCLUDE",
              "operator": "EQUALS"
            }],
            [{
              "fieldName": "source",
              "values": ["Social"],
              "type": "INCLUDE",
              "operator": "EQUALS"
            }]
          ]
        }
        
  4. Combina mediante OR todas las submatrices de la matriz request.dimensionsFilters.

    Por ejemplo, para el siguiente filtro, el conector solo debe incluir valores donde el campo country es USA O donde el campo country es Canada.

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

Ejemplo

En el siguiente ejemplo se muestra el flujo integral desde el usuario del informe, que define los filtros, hasta el conector comunitario, que devuelve datos filtrados.

Filtro de ejemplo

  1. El usuario del informe ha configurado dos filtros:

    1. country es IN_LIST de Canada, USA
    2. source es IN_LIST de Social, Organic
  2. El usuario del informe ha configurado un componente del gráfico con la dimensión source y la métrica sessions

  3. Data Studio ejecuta getData() con el siguiente objeto de solicitud:

    {
          "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. El conector responde con datos filtrados.

    En la solicitud de ejemplo, devuelve source y sessions, donde country es "Canada" o "USA" Y donde source es "Social" o "Organic". Como todos los filtros se han podido aplicar correctamente, asigna true a filtersApplied.

Datos originales

source sessions country
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

Datos filtrados

source sessions
Social 60
Social 50
Organic 90
Organic 80

Respuesta de 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 incompatibles

Si el conector no puede aplicar todos los filtros de la solicitud, no se debe filtrar ningún dato. Devuelve todos los campos solicitados (incluidos los campos forFilterOnly) y asigna el valor false a la clave filtersApplied de la respuesta.

Ejemplo:

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