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).
Reglas para aplicar filtros
- Aplica todos los filtros o ninguno. Consulta Filtros no admitidos.
- No incluyas campos
forFilterOnly
en la respuesta. Combina mediante
AND
todas las entradas de la matrizrequest.dimensionsFilters
.Por ejemplo, para el siguiente filtro, el conector solo debe incluir valores donde el campo
country
esUSA
Y donde el camposource
esSocial
.{ "dimensionsFilters": [ [{ "fieldName": "country", "values": ["USA"], "type": "INCLUDE", "operator": "EQUALS" }], [{ "fieldName": "source", "values": ["Social"], "type": "INCLUDE", "operator": "EQUALS" }] ] }
Combina mediante
OR
todas las submatrices de la matrizrequest.dimensionsFilters
.Por ejemplo, para el siguiente filtro, el conector solo debe incluir valores donde el campo
country
esUSA
O donde el campocountry
esCanada
.{ "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.
El usuario del informe ha configurado dos filtros:
country
esIN_LIST
deCanada, USA
source
esIN_LIST
deSocial, Organic
El usuario del informe ha configurado un componente del gráfico con la dimensión
source
y la métricasessions
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" }] ] }
El conector responde con datos filtrados.
En la solicitud de ejemplo, devuelve
source
ysessions
, dondecountry
es"Canada"
o"USA"
Y dondesource
es"Social"
o"Organic"
. Como todos los filtros se han podido aplicar correctamente, asignatrue
afiltersApplied
.
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
}