Segmentación

La segmentación, 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, si agregas segments.device a una consulta, se genera un informe con una fila para cada combinación de dispositivo y recurso especificado en la cláusula FROM, además de la división de los valores estadísticos (impresiones, clics, conversiones, etc.) entre ellos.

Si bien en la IU de Google Ads solo se puede utilizar 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 al enviar 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 para el primer y segundo objeto, incluido el nombre del recurso, son los mismos. Las impresiones están segmentadas por dispositivo y, por lo tanto, se pueden mostrar dos o más objetos para la misma campaña.

Segmentación implícita

Inicialmente, cada informe se segmenta según el recurso especificado en la cláusula FROM. Se muestra el campo resource_name del recurso en la cláusula FROM y se segmentan las métricas, incluso cuando el campo resource_name no se incluye de forma explícita en la consulta. Por ejemplo, cuando especificas ad_group como el recurso en la cláusula FROM, se mostrará ad_group.resource_name automáticamente y las métricas se segmentarán de forma implícita a nivel del grupo de anuncios.

Entonces, para esta consulta,

SELECT metrics.impressions
FROM ad_group

obtendrías una cadena JSON como esta:

{
  "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. Por ejemplo, seguiremos haciendo consultas desde el recurso ad_group. Para que un campo del segmento se pueda seleccionar desde el 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 del segmento

Cuando eliges entre algunos recursos, es posible que tengas la opción de unir recursos relacionados de forma implícita si seleccionas sus campos junto a 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 con al menos 1 campo en la cláusula SELECT se mostrará de forma automática, incluso cuando el campo resource_name no se incluya de forma explícita en la consulta.

Al igual que cuando seleccionas 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 los recursos enumerados hará que la consulta se segmente aún más por el resource_name que se muestra de ese Segmenting Resource. A modo de ejemplo, verás que el recurso campaign aparece como Segmenting Resource para el recurso campaign_budget. La selección de cualquier campo de campaña, como campaign.name, del recurso campaign_budget no solo hará que se muestre el campo campaign.name, sino que el campo campaign.resource_name se mostrará y se segmentará.

Posibilidad de seleccionar entre segmentos y métricas

Es posible que un campo de segmento determinado no sea compatible con algunos de los otros campos de segmento 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 de 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.

Si agrega algunos segmentos, es posible que disminuyan las métricas de la fila de resumen.
Cuando se agrega segments.keyword.info.match_type a una consulta con FROM 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 menores porque excluirían cualquier métrica que no sea 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. Los siguientes segmentos de fechas se denominan segmentos de fechas principales como excepción a esta regla:

  • segments.date
  • segments.week
  • segments.month
  • segments.quarter
  • segments.year

Reglas para los campos de segmento 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áusula SELECT.

  • Si alguno de estos segmentos está en la cláusula SELECT, se debe especificar un período finito compuesto por segmentos de fechas principales en la cláusula WHERE (no es necesario que los segmentos de fechas sean los mismos que se especifican en SELECT).

Ejemplos

No válido: Dado que segments.date está en la cláusula SELECT, debes especificar un período finito en la cláusula WHERE para una segments.date, segments.week, segments.month, segments.quarter o segments.year.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Válido: Esta consulta muestra los nombres de campañas y los clics acumulados durante el período. Ten en cuenta que segments.date no necesita aparecer 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 y los clics de las campañas 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, para el recurso search_term_view, también está segmentado implícitamente por grupo de anuncios, no solo por término de búsqueda, como lo refleja la estructura de su nombre de recurso, que también incluye el grupo de anuncios. Por lo tanto, es posible que en los resultados aparezcan algunas filas aparentemente duplicadas con los mismos términos de búsqueda cuando, en realidad, las filas pertenezcan 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 mostrados en este ejemplo parecen ser duplicados, los nombres de sus recursos son diferentes, en especial, 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, podemos concluir que la API funcionó según lo previsto y no mostró objetos duplicados en este caso.