Segmentação

A segmentação, disponível na interface do Google Ads como um menu separado, pode ser implementados na API Google Ads adicionando o campo correto a uma consulta. Para exemplo, adicionar segments.device a um resulta em um relatório com uma linha para cada combinação de dispositivo e o recurso especificado na cláusula FROM, e o valores estatísticos (impressões, cliques, conversões etc.) divididos entre eles.

Na interface do Google Ads, apenas um segmento por vez pode ser usado, com a API, é possível especificar vários segmentos na mesma consulta.

SELECT
  campaign.name,
  campaign.status,
  segments.device,
  metrics.impressions
FROM campaign

Os resultados do envio dessa consulta GoogleAdsService.SearchStream ficaria mais ou menos com esta string 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"
      }
    },
    ...
  ]
}

No resultado do exemplo acima, os atributos para a primeira e a segunda incluindo o nome do recurso, são os mesmos. As impressões são segmentadas por device e, assim, dois ou mais objetos podem ser retornados para a mesma campanha.

Segmentação implícita

Cada relatório é segmentado inicialmente pelo recurso especificado no FROM . O campo resource_name do recurso na cláusula FROM é retornados e as métricas são segmentadas por ele, mesmo quando o campo resource_name for explicitamente incluídos na consulta. Por exemplo, quando você especifica ad_group como o recurso na cláusula FROM, em seguida, ad_group.resource_name vai automaticamente retornado, e as métricas segmentarão implicitamente em relação a ele no nível "ad_group".

Então, para esta consulta,

SELECT metrics.impressions
FROM ad_group

você receberia uma string 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"
      }
    }
  ]
}

O campo resource_name de adGroup é sempre retornado porque ad_group foi especificado como um recurso na cláusula FROM.

Campos de segmento selecionáveis

Nem todos os campos de segmento são selecionáveis para um determinado recurso na cláusula FROM. Por exemplo, vamos continuar consultando no ad_group recurso. Para que um campo de segmento possa ser selecionado no recurso ad_group, Esse campo precisa existir na lista Segments de ad_group. O Segments é a parte amarela da tabela de campos disponíveis no página de metadados do recurso ad_group.

Segmentar recursos

Ao selecionar alguns recursos, você pode ter a opção de mesclar implicitamente em recursos relacionados selecionando seus campos junto com os campos da recurso na cláusula FROM. Esses recursos relacionados podem ser encontrados na Lista Attributed Resources no recurso nos metadados da cláusula FROM página. No caso do recurso ad_group, você vai encontrar que também é possível selecionar campos do campaign recurso. O campo resource_name de qualquer Attributed Resources com pelo menos um campo na cláusula SELECT será retornado automaticamente, mesmo quando o O campo resource_name não está explicitamente incluído na consulta.

Assim como na seleção de campos Attributed Resource, também é possível selecionar Segmenting Resource. Se um determinado recurso tiver um Segmenting Resources na página de metadados dele e, em seguida, selecionar campos de um desses recursos listados fará com que a consulta seja ainda mais segmentada pelo resource_name retornado dessa Segmenting Resource. Como exemplo, você descobrirá que o O recurso campaign está listado como um Segmenting Resource para o recurso campaign_budget. Selecionando qualquer um campo de campanha, como campaign.name, de o recurso campaign_budget fará com que o campo campaign.name não seja retornado, mas fará com que campaign.resource_name a ser retornados e segmentados.

Capacidade de seleção entre segmentos e métricas

Um determinado campo de segmento pode não ser compatível com alguns dos outros segmentos campos ou com alguns dos campos de métricas. Para identificar quais campos de segmento compatíveis entre si, consulte a lista de selectable_with dos segmentos na cláusula SELECT.

No caso do ad_group, há mais de 50 segmentos disponíveis que que você pode selecionar. No entanto, a lista selectable_with para segments.hotel_check_in_date é um conjunto muito menor de segmentos compatíveis. Isso significa que, se você adicionar segments.hotel_check_in_date na cláusula SELECT, você limitará os segmentos disponíveis que você resta para selecionar na interseção desses dois listas.

Ao adicionar alguns segmentos, as métricas na linha de resumo podem diminuir
Quando segments.keyword.info.match_type é adicionado a uma consulta com FROM ad_group_ad, esse segmento está instruindo a consulta a recuperar apenas as linhas de dados que contenham palavras-chave e remover as linhas que não estejam associadas a um palavra-chave. Nesse caso, as métricas seriam menores porque excluiriam qualquer métricas diferentes de palavras-chave.

Regras para segmentos na cláusula WHERE

Quando um segmento está na cláusula WHERE, ele também precisa estar em SELECT. . A exceção a essa regra são os seguintes segmentos de data, que são Chamados de segmentos de data principal:

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

Regras para campos de segmento de data principal

Os segmentos segments.date, segments.week, segments.month, segments.quarter e segments.year funcionam da seguinte maneira:

  • Esses segmentos podem ser filtrados na cláusula WHERE sem aparecer na cláusula SELECT.

  • Se algum desses segmentos estiver na cláusula SELECT, um período finito composto por segmentos de data essenciais deve ser especificado na cláusula WHERE (os segmentos de data não precisam ser os mesmos especificados no SELECT).

Exemplos

Inválido:como segments.date é na cláusula SELECT, você precisa especificar um período finito em a cláusula WHERE para uma segments.date; segments.week, segments.month, segments.quarter ou segments.year.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Válido:esta consulta retorna nomes de campanhas e cliques acumulados durante o período. Observe que segments.date não precisa aparecer na cláusula SELECT.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Válido:esta consulta retorna nomes de campanhas e cliques segmentados por data para todos os dias do período.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Válido:esta consulta retorna nomes de campanhas e cliques segmentados por mês para todos os dias do período.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Válido:esta consulta retorna nomes de campanhas e cliques segmentados por trimestre e depois por mês para todos os meses do período.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

Para o search_term_view, também implicitamente segmentados por grupo de anúncios, não apenas por um termo de pesquisa, conforme refletido pelo estrutura do recurso nome, que também inclui um grupo de anúncios. Assim, você terá algumas visualizações duplicadas linhas com os mesmos termos de pesquisa que aparecem em seus resultados quando, na verdade, as linhas pertenceriam a um grupo de anúncios 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"
      }
    }
  ]
}

Embora os dois objetos retornados neste exemplo pareçam ser duplicados, os nomes dos recursos são diferentes, especialmente no "grupo de anúncios" parte. Isso significa que o termo de pesquisa "google fotos" é atribuída aos dois grupos de anúncios (ID 2222222222 e 33333333333) na mesma data (15/06/2015). Assim, podemos concluir que a API funcionou como pretendido e não retornou um retorno objetos duplicados nesse caso.