La segmentazione, disponibile nell'interfaccia utente di Google Ads come menu separato, può essere implementata nell'API Google Ads semplicemente aggiungendo il campo appropriato a una query. Ad esempio, l'aggiunta di segments.device
a una query genera un report con una riga per ogni combinazione di dispositivo e la risorsa specificata nella clausola FROM
, nonché i valori statistici (impressioni, clic, conversioni e così via) suddivisi tra loro.
Nell'interfaccia utente di Google Ads è possibile utilizzare un solo segmento alla volta, ma con l'API puoi specificare più segmenti nella stessa query.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
I risultati dell'invio di questa query a
GoogleAdsService.SearchStream
avranno un aspetto simile a questa stringa 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"
}
},
...
]
}
Tieni presente che nel risultato di esempio riportato sopra, gli attributi per il primo e il secondo oggetto, incluso il nome della risorsa, sono gli stessi. Le impressioni sono segmentate per dispositivo e pertanto è possibile restituire due o più oggetti per la stessa campagna.
Segmentazione implicita
Ogni report viene inizialmente segmentato in base alla risorsa specificata nella clausola FROM
. Il campo resource_name della risorsa nella clausola FROM
viene visualizzato e le metriche vengono segmentate in base a questo, anche se il campo resource_name non è incluso esplicitamente nella query. Ad esempio, quando specifichi
ad_group
come risorsa nella clausola FROM
, ad_group.resource_name
verrà
ristituito automaticamente e le metriche verranno segmentate implicitamente in base a questo valore a livello di
ad_group.
Per questa query,
SELECT metrics.impressions
FROM ad_group
otterrai una stringa JSON come questa:
{
"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"
}
}
]
}
Tieni presente che il campo resource_name
di adGroup
viene sempre restituito perché
ad_group
è stato specificato come risorsa nella clausola FROM
.
Campi del segmento selezionabili
Non tutti i campi del segmento sono selezionabili per una determinata risorsa nella clausola FROM
.
Ad esempio, continueremo a eseguire query dalla risorsa ad_group
. Affinché un campo del segmento sia selezionabile dalla risorsa ad_group, deve essere presente nell'elenco Segments
per ad_group. L'elenco Segments
è la parte gialla della tabella dei campi disponibili nella pagina dei metadati della risorsa
ad_group
.
Risorse del segmento
Quando selezioni alcune risorse, potresti avere la possibilità di unire implicitamente le risorse correlate selezionando i relativi campi insieme ai campi della risorsa nella clausola FROM
. Queste risorse correlate sono disponibili nell'elenco Attributed Resources
della risorsa nella pagina dei metadati della clausola FROM
. Nel caso della risorsa ad_group
, vedrai che puoi anche selezionare i campi dalla risorsa campaign
. Il campo resource_name di qualsiasi Attributed Resources
con almeno un campo nella clausola SELECT
verrà restituito automaticamente, anche se il campo resource_name non è incluso esplicitamente nella query.
Analogamente alla selezione dei campi Attributed Resource
, puoi anche selezionare i campi Segmenting Resource
. Se una determinata risorsa ha un elenco di Segmenting Resources
nella pagina dei metadati, la selezione dei campi di una di queste risorse elencate causerà un ulteriore segmentazione della query in base al valore di resource_name restituito da quel Segmenting Resource
. Ad esempio, noterai che la risorsa campaign
è elencata come Segmenting Resource
per la risorsa campaign_budget
. La selezione di un campo della campagna, ad esempio campaign.name
, dalla risorsa campaign_budget non solo restituisce il campo campaign.name, ma restituisce e segmenta anche il campo campaign.resource_name
.
Selettività tra segmenti e metriche
Un determinato campo del segmento potrebbe non essere compatibile con alcuni degli altri campi del segmento o con alcuni dei campi delle metriche. Per identificare i campi dei segmenti
compatibili tra loro, puoi esaminare l'elenco selectable_with
dei segmenti nella clausola SELECT
.
Nel caso della risorsa
ad_group
, sono disponibili più di 50 segmenti che
puoi selezionare. Tuttavia, l'elenco selectable_with
per
segments.hotel_check_in_date
è un insieme molto più piccolo di segmenti compatibili. Ciò significa che se aggiungi il campo segments.hotel_check_in_date
alla clausola SELECT
, limiterai i segmenti disponibili che puoi selezionare all'intersezione di questi due elenchi.
- Quando aggiungi alcuni segmenti, le metriche nella riga di riepilogo potrebbero diminuire
- Quando
segments.keyword.info.match_type
viene aggiunto a una query conFROM ad_group_ad
, questo segmento indica alla query di recuperare solo le righe di dati che contengono parole chiave e di rimuovere le righe non associate a una parola chiave. In questo caso, le metriche sarebbero inferiori perché escluderebbero tutte le metriche non correlate alle parole chiave.
Regole per i segmenti nella clausola WHERE
Quando un segmento è nella clausola WHERE
, deve essere presente anche nella clausola SELECT
. L'eccezione a questa regola sono i seguenti segmenti di date, definiti
segmenti di date principali:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Regole per i campi del segmento di date principale
I segmenti segments.date
, segments.week
, segments.month
,
segments.quarter
e segments.year
funzionano come segue:
Questi segmenti possono essere filtrati nella clausola
WHERE
senza comparire nella clausolaSELECT
.Se uno di questi segmenti è presente nella clausola
SELECT
, nella clausolaWHERE
deve essere specificato un intervallo di date limitato composto da segmenti di date principali (non è necessario che i segmenti di date siano gli stessi specificati inSELECT
).
Esempi
Non valido: poiché segments.date è nella clausola SELECT , devi specificare un intervallo di date limitato nella clausola WHERE per segments.date , segments.week , segments.month , segments.quarter o segments.year .
|
SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
Valida:questa query restituisce i nomi delle campagne e i clic accumulati durante l'intervallo di date. Tieni presente che segments.date
non deve essere presente nella clausola SELECT .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Valida: questa query restituisce i nomi delle campagne e i clic suddivisi per data per tutti i giorni dell'intervallo di date. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Valida: questa query restituisce i nomi delle campagne e i clic suddivisi per mese per tutti i giorni dell'intervallo di date. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Valida: questa query restituisce i nomi delle campagne e i clic suddivisi per trimestre e poi per mese per tutti i mesi dell'intervallo di anni. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2015 AND segments.year < 2020 |
search_term_view
Tieni presente che per la risorsa
search_term_view
, il segmento è anche implicitamente basato sul gruppo di annunci, non solo su un termine di ricerca, come indicato dalla
struttura del suo
nome della risorsa,
che include anche il gruppo di annunci. Di conseguenza, nei risultati verranno visualizzate alcune righe apparentemente duplicate con gli stessi termini di ricerca, anche se in realtà appartengono a un gruppo di annunci diverso:
{
"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"
}
}
]
}
Sebbene i due oggetti restituiti in questo esempio sembrino duplicati,
i loro nomi delle risorse sono in realtà diversi, in particolare nella parte "gruppo di annunci". Ciò significa che il termine di ricerca "google foto" viene attribuito ai due gruppi di annunci (ID 2222222222
e 33333333333
) nella stessa data (15-06-2015).
Pertanto, possiamo concludere che l'API ha funzionato come previsto e non ha restituito oggetti duplicati in questo caso.