La segmentación, que se encuentra disponible en la IU de Google Ads como un menú independiente, se puede implementar en la API de Google Ads con solo agregar el campo adecuado a una consulta. Por ejemplo, cuando se agrega segments.device
a una consulta, se genera un informe con una fila para cada combinación de dispositivo y el recurso especificado en la cláusula FROM
, y los valores estadísticos (impresiones, clics, conversiones, etc.) se dividen entre ellos.
Si bien en la IU de Google Ads solo se puede usar un segmento a la vez, con la API puedes especificar varios segmentos en la misma consulta.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
Los resultados del envío de esta consulta a GoogleAdsService.SearchStream
se verían como esta cadena JSON:
{
"results":[
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"10922"
},
"segments":{
"device":"MOBILE"
}
},
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"28297"
},
"segments":{
"device":"DESKTOP"
}
},
...
]
}
Ten en cuenta que, en el resultado de muestra anterior, los atributos del primer y segundo objeto, incluido el nombre del recurso, son los mismos. Las impresiones se segmentan por dispositivo y, por lo tanto, se pueden mostrar dos o más objetos para la misma campaña.
Segmentación implícita
En un principio, todos los informes están segmentados por el recurso especificado en la cláusula FROM
. Se muestra el campo resource_name del recurso en la cláusula FROM
y las métricas se segmentan por él, incluso cuando el campo resource_name no está incluido de forma explícita en la consulta. Por ejemplo, cuando especificas ad_group
como el recurso en la cláusula FROM
, se mostrará automáticamente ad_group.resource_name
y las métricas se segmentarán de forma implícita a nivel de ad_group.
Entonces, para esta consulta,
SELECT metrics.impressions
FROM ad_group
obtendrás una cadena JSON como la siguiente:
{
"results":[
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/2222222222"
},
"metrics":{
"impressions":"237"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/33333333333"
},
"metrics":{
"impressions":"15"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/44444444444"
},
"metrics":{
"impressions":"0"
}
}
]
}
Ten en cuenta que el campo resource_name
de adGroup
siempre se muestra porque ad_group
se especificó como un recurso en la cláusula FROM
.
Campos de segmentos seleccionables
No todos los campos de segmento se pueden seleccionar para un recurso determinado en la cláusula FROM
.
Como ejemplo, seguiremos realizando consultas desde el recurso ad_group
. Para que se pueda seleccionar un campo de segmento del recurso ad_group, ese campo debe existir en la lista Segments
de ad_group. La lista Segments
es la parte amarilla de la tabla de campos disponibles en la página de metadatos del recurso ad_group
.
Recursos de segmentos
Cuando seleccionas entre algunos recursos, es posible que tengas la opción de unir de forma implícita los recursos relacionados seleccionando sus campos junto con los campos del recurso en la cláusula FROM
. Estos recursos relacionados se pueden encontrar en la lista Attributed Resources
del recurso en la página de metadatos de la cláusula FROM
. En el caso del recurso ad_group
, verás que también puedes seleccionar campos del recurso campaign
. El campo resource_name de cualquier Attributed Resources
que tenga al menos 1 campo en la cláusula SELECT
se mostrará automáticamente, incluso cuando el campo resource_name no esté incluido de forma explícita en la consulta.
Al igual que cuando seleccionas los campos Attributed Resource
, también puedes seleccionar campos Segmenting Resource
. Si un recurso determinado tiene una lista Segmenting Resources
en su página de metadatos, seleccionar campos de uno de esos recursos hará que la consulta se segmente aún más por el resource_name que se muestra de ese Segmenting Resource
. Por ejemplo, verás que el recurso campaign
aparece como Segmenting Resource
para el recurso campaign_budget
. Si seleccionas cualquier campo de campaña, como campaign.name
, del recurso campaign_budget, no solo se mostrará el campo campaign.name, sino que se mostrará el campo campaign.resource_name
y se segmentará en él.
Seleccionabilidad entre segmentos y métricas
Es posible que un campo de segmento determinado no sea compatible con algunos de los otros campos de segmentos o con algunos de los campos de métricas. Para identificar qué campos de segmentos son compatibles entre sí, puedes revisar la lista selectable_with
de los segmentos en la cláusula SELECT
.
En el caso del recurso ad_group
, hay más de 50 segmentos disponibles que puedes seleccionar. Sin embargo, la lista selectable_with
para segments.hotel_check_in_date
es un conjunto mucho más pequeño de segmentos compatibles. Esto significa que, si agregas el campo segments.hotel_check_in_date
a la cláusula SELECT
, limitarás los segmentos disponibles que te quedan para seleccionar a la intersección de estas dos listas.
- Al agregar algunos segmentos, es posible que disminuyan las métricas en la fila de resumen
- Cuando se agrega
segments.keyword.info.match_type
a una consulta conFROM ad_group_ad
, ese segmento le indica a la consulta que solo obtenga las filas de datos que tienen palabras clave y que quite cualquier fila que no esté asociada con una palabra clave. En este caso, las métricas serían más bajas porque excluirían cualquier métrica que no fuera de palabra clave.
Reglas para segmentos en la cláusula WHERE
Cuando un segmento está en la cláusula WHERE
, también debe estar en la cláusula SELECT
. La excepción a esta regla son los siguientes segmentos de fecha, que se denominan segmentos de fechas principales:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Reglas para los campos de segmentos de fechas principales
Los segmentos segments.date
, segments.week
, segments.month
, segments.quarter
y segments.year
funcionan de la siguiente manera:
Estos segmentos se pueden filtrar en la cláusula
WHERE
sin aparecer en la cláusulaSELECT
.Si alguno de estos segmentos está en la cláusula
SELECT
, se debe especificar un período limitado compuesto por segmentos de fechas principales en la cláusulaWHERE
(no es necesario que los segmentos de fechas sean los mismos que se especifican enSELECT
).
Ejemplos
No válido: Dado que segments.date está en la cláusula SELECT , debes especificar un período limitado en la cláusula WHERE para segments.date , segments.week , segments.month , segments.quarter o segments.year .
|
SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
Válida: Esta consulta muestra los nombres de las campañas y los clics acumulados durante el período. Ten en cuenta que segments.date no es necesario que aparezca en la cláusula SELECT .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Válida: Esta consulta muestra los nombres de las campañas y los clics segmentados por fecha para todos los días del período. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Válida: Esta consulta muestra los nombres de las campañas y los clics segmentados por mes para todos los días del período. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Válida: Esta consulta muestra los nombres de las campañas y los clics segmentados por trimestre y, luego, por mes para todos los meses del rango de años. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2015 AND segments.year < 2020 |
search_term_view
Ten en cuenta que, en el caso del recurso search_term_view
, también se segmenta de forma implícita por grupo de anuncios, no solo por un término de búsqueda, como lo refleja la estructura de su nombre del recurso, que también incluye el grupo de anuncios. Por lo tanto, algunas filas aparentemente duplicadas con los mismos términos de búsqueda aparecen en los resultados cuando, en realidad, las filas pertenecerían a un grupo de anuncios diferente:
{
"results":[
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"3"
},
"segments":{
"date":"2015-06-15"
}
},
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"2"
},
"segments":{
"date":"2015-06-15"
}
}
]
}
Aunque los dos objetos que se muestran en este ejemplo están duplicados, sus nombres de recursos en realidad son diferentes, particularmente en la parte del "grupo de anuncios". Esto significa que el término de búsqueda "google fotos" se atribuye a los dos
grupos de anuncios (ID 2222222222
y 33333333333
) en la misma fecha (15/06/2015).
Por lo tanto, se puede concluir que la API funcionó según lo previsto y no mostró objetos duplicados en este caso.