A segmentação está disponível na interface do Google Ads como um menu separado. Para implementar a segmentação na API Google Ads, adicione o campo adequado a uma consulta. Por exemplo, suponha que você adicione segments.device
a uma consulta. Isso resulta em um relatório com uma linha para cada combinação de dispositivo e o recurso especificado na cláusula FROM
, e os valores estatísticos (impressões, cliques, conversões etc.) divididos entre eles.
Na interface do Google Ads, só é possível usar um segmento por vez, mas com a API, você pode especificar vários segmentos na mesma consulta.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
Os resultados do envio dessa consulta para
GoogleAdsService.SearchStream
serão semelhantes a 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"
}
},
...
]
}
Neste exemplo de resultado, os atributos do primeiro e do segundo objetos, incluindo o nome do recurso, são iguais. As impressões são segmentadas por dispositivo e, portanto, dois ou mais objetos podem ser retornados para a mesma campanha.
Segmentação implícita
Inicialmente, todos os relatórios são segmentados pelo recurso especificado na cláusula FROM
. O campo resource_name
do recurso na cláusula FROM
é retornado, e as métricas são segmentadas por ele, mesmo quando o campo "resource_name" não está incluído explicitamente na consulta. Por exemplo, quando você especifica ad_group
como o recurso na cláusula FROM
, ad_group.resource_name
é retornado automaticamente, e as métricas são segmentadas implicitamente em relação a ele no nível do grupo de anúncios.
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
é especificado como um recurso na cláusula FROM
.
Campos de segmento selecionáveis
Nem todos os campos de segmento podem ser selecionados para um determinado recurso na cláusula FROM
.
Por exemplo, suponha que você continue consultando o recurso ad_group
. Para que um campo de segmento possa ser selecionado no recurso ad_group
, ele precisa estar na lista Segments
de ad_group. A lista Segments
é a parte amarela da tabela de campos disponíveis na página de metadados do recurso ad_group
.
Recursos de segmento
Ao selecionar alguns recursos, você pode fazer uma junção implícita
em recursos relacionados selecionando os campos deles junto com os campos do
recurso na cláusula FROM
. Esses recursos relacionados podem ser encontrados na lista
Attributed Resources
na página de metadados da cláusula FROM
. No caso do recurso ad_group
, você também pode selecionar campos do recurso campaign
. O campo resource_name
de qualquer Attributed Resources
com pelo menos um campo na cláusula SELECT
será retornado automaticamente, mesmo quando o campo resource_name não estiver incluído explicitamente na consulta.
Assim como na seleção de campos Attributed Resource
, você também pode selecionar campos Segmenting Resource
. Se um determinado recurso tiver uma lista de Segmenting Resources
na página de metadados, e você selecionar campos de um dos recursos listados, a consulta será segmentada ainda mais pelo resource_name
retornado desse Segmenting Resource
. Por exemplo, o recurso campaign
é listado como um Segmenting Resource
para o recurso campaign_budget
. Selecionar qualquer campo de campanha, como
campaign.name
, do recurso campaign_budget
não apenas faz com que o campo campaign.name
seja retornado, mas também faz com que o campo
campaign.resource_name
seja retornado e segmentado.
Capacidade de seleção entre segmentos e métricas
Um determinado campo de segmento pode não ser compatível com alguns dos outros campos de segmento ou com alguns dos campos de métricas. Para identificar quais campos de segmento são compatíveis entre si, revise a lista selectable_with
dos segmentos na cláusula SELECT
.
No caso do recurso ad_group
, há mais de 50 segmentos disponíveis 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 o campo segments.hotel_check_in_date
à cláusula SELECT
, vai limitar os segmentos disponíveis para seleção à interseção dessas duas listas.
Quando você adiciona determinados 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 informa à consulta para apenas receber as linhas de dados que têm palavras-chave e remover qualquer linha que não esteja associada a uma palavra-chave. Nesse caso, as métricas serão menores porque excluem todas as métricas que não são de palavras-chave.
Regras para segmentos na cláusula WHERE
Quando um segmento está na cláusula WHERE
, ele também precisa estar na cláusula SELECT
. A exceção a essa regra são os seguintes segmentos de data, que são chamados de segmentos de data principais:
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áusulaSELECT
.Se algum desses segmentos estiver na cláusula
SELECT
, um período finito composto de segmentos de data principais precisará ser especificado na cláusulaWHERE
. Os segmentos de data não precisam ser os mesmos especificados noSELECT
.
Exemplos
Inválido:como segments.date está na cláusula SELECT , é necessário especificar um período finito na cláusula WHERE para um segments.date , segments.week , segments.month , segments.quarter ou segments.year .
|
SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
Válida:essa consulta retorna os nomes das campanhas e os cliques acumulados durante o período. segments.date não precisa aparecer na cláusula SELECT .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Válida:essa consulta retorna nomes de campanhas e cliques segmentados por data para todos os dias no período. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Válida:essa consulta retorna nomes de campanhas e cliques segmentados por mês para todos os dias no período. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Válida:essa consulta retorna nomes de campanhas e cliques segmentados por trimestre e depois por mês para todos os meses do período anual. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2019 AND segments.year < 2024 |
search_term_view
O recurso search_term_view
também é segmentado implicitamente por grupo de anúncios, não apenas por um termo de pesquisa, conforme refletido pela estrutura do nome do recurso, que também inclui o grupo de anúncios. Portanto, você vai receber algumas linhas aparentemente duplicadas com os mesmos termos de pesquisa nos resultados, mas elas pertencem a um grupo de anúncios diferente.
{
"results":[
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"3"
},
"segments":{
"date":"2024-06-15"
}
},
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"2"
},
"segments":{
"date":"2024-06-15"
}
}
]
}
Embora os dois objetos retornados neste exemplo pareçam ser duplicados, os nomes dos recursos são diferentes, principalmente na parte "grupo de anúncios". Isso significa que o termo de pesquisa "google fotos" é atribuído aos dois grupos de anúncios (IDs 2222222222
e 33333333333
) na mesma data (15/06/2024).
Portanto, podemos concluir que a API funcionou conforme o esperado e não retornou objetos duplicados nesse caso.