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 della risorsa specificata nella clausola FROM
e i valori statistici (impressioni, clic, conversioni e così via) vengono suddivisi tra questi valori.
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
sarebbero simili alla seguente 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 dell'esempio precedente, gli attributi del primo e del secondo oggetto, incluso il nome della risorsa, sono gli stessi. Le impressioni sono segmentate per dispositivo; di conseguenza, per la stessa campagna possono essere restituiti due o più oggetti.
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
restituito e le metriche sono segmentate in base al campo resource_name, anche quando il campo resource_name non è
incluso esplicitamente nella query. Ad esempio, se specifichi ad_group
come risorsa nella clausola FROM
, verrà restituito automaticamente ad_group.resource_name
e le metriche verranno segmentate implicitamente in base a questo livello a livello di ad_group.
Per questa query,
SELECT metrics.impressions
FROM ad_group
otterresti una stringa JSON simile alla seguente:
{
"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
.
Come esempio, continueremo a eseguire query dalla risorsa ad_group
. Affinché un campo del segmento sia selezionabile dalla risorsa ad_group,
questo campo 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
.
Segmentazione delle risorse
Quando selezioni tra alcune risorse, potresti avere la possibilità di eseguire il join implicito
delle 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
1 campo nella clausola SELECT
verrà restituito automaticamente, anche quando
il campo resource_name non è incluso esplicitamente nella query.
Come per selezionare i campi Attributed Resource
, puoi anche selezionare Segmenting Resource
campi. Se una determinata risorsa ha un elenco Segmenting Resources
nella pagina dei metadati e selezioni i campi di una di queste risorse elencate, la query verrà ulteriormente segmentata in base al valore resource_name restituito per
Segmenting Resource
. Ad esempio, vedrai che la risorsa campaign
è elencata come Segmenting Resource
per la risorsa campaign_budget
. La selezione di un campo qualsiasi della campagna, ad esempio campaign.name
, dalla risorsa campaign_budget non solo comporta la restituzione del campo campaign.name, ma anche la restituzione e la segmentazione del campo campaign.resource_name
.
Selezionabilità tra segmenti e metriche
Un determinato campo del segmento potrebbe non essere compatibile con alcuni degli altri campi del segmento o con alcuni campi delle metriche. Per identificare quali campi del segmento sono
compatibili tra loro, puoi esaminare l'elenco selectable_with
dei segmenti nella clausola SELECT
.
Nel caso della risorsa ad_group
, puoi selezionare oltre 50 segmenti disponibili. Tuttavia, l'elenco selectable_with
per
segments.hotel_check_in_date
è un insieme molto più ridotto di segmenti compatibili. Ciò significa che se aggiungi il campo segments.hotel_check_in_date
alla clausola SELECT
, limiti i segmenti disponibili da 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
, il segmento indica alla query di ottenere solo le righe di dati che contengono parole chiave e di rimuovere tutte le righe non associate a una parola chiave. In questo caso, le metriche sarebbero più basse perché escluderebbero tutte le metriche non relative alle parole chiave.
Regole per i segmenti nella clausola WHERE
Quando un segmento si trova nella clausola WHERE
, deve trovarsi anche nella clausola SELECT
. Fanno eccezione i seguenti segmenti di data, denominati segmenti di date principali:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Regole per i campi del segmento di date principali
I segmenti segments.date
, segments.week
, segments.month
,
segments.quarter
e segments.year
funzionano nel seguente modo:
Questi segmenti possono essere filtrati nella clausola
WHERE
senza apparire nella clausolaSELECT
.Se uno qualsiasi di questi segmenti si trova nella clausola
SELECT
, nella clausolaWHERE
deve essere specificato un intervallo di date limitato composto da segmenti di date principali (i segmenti di data non devono essere necessariamente gli stessi specificati inSELECT
).
Esempi
Non valido: dato che segments.date si trova 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 |
Valido: questa query restituisce i nomi e i clic delle campagne
accumulati durante l'intervallo di date selezionato. Tieni presente che segments.date
non deve necessariamente essere presente nella clausola SELECT .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Valido: questa query restituisce i nomi delle campagne e i clic segmentati per data per tutti i giorni compresi nell'intervallo di date. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Valido: questa query restituisce i nomi delle campagne e i clic segmentati per mese per tutti i giorni compresi nell'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 e i clic delle campagne segmentati per trimestre e poi per mese per tutti i mesi dell'intervallo. |
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 la risorsa search_term_view
viene anche segmentata implicitamente per gruppo di annunci, non solo per un termine di ricerca, come indicato dalla struttura del relativo nome della risorsa, che include anche il gruppo di annunci. Pertanto, nei risultati verranno visualizzate alcune righe apparentemente duplicate con gli stessi termini di ricerca, quando in realtà le righe apparterranno 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 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.