Segmentazione

La segmentazione, disponibile nell'interfaccia utente di Google Ads come menu separato, può essere implementata nell'API Google Ads semplicemente aggiungendo a una query il campo corretto. Ad esempio, l'aggiunta di segments.device a una query genera un report con una riga per ogni combinazione di dispositivo e risorsa specificata nella clausola FROM e i valori statistici (impressioni, clic, conversioni e così via) suddivisi tra di essi.

Sebbene nella UI di Google Ads sia possibile utilizzare un solo segmento alla volta, 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 dovrebbero essere 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 di esempio precedente, gli attributi per il primo e il secondo oggetto, incluso il nome della risorsa, sono gli stessi. Le impressioni sono segmentate per dispositivo e, di conseguenza, due o più oggetti possono essere restituiti 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 restituito e le metriche vengono segmentate in base a questo, anche quando il campo resource_name non è incluso esplicitamente nella query. Ad esempio, quando 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 valore a livello di gruppo di annunci.

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 dei segmenti 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, questo campo deve esistere 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.

Segmenta le risorse

Quando selezioni tra alcune risorse, potresti avere la possibilità di unire implicitamente alle risorse correlate selezionando i rispettivi campi insieme ai campi della risorsa nella clausola FROM. Queste risorse correlate sono disponibili nell'elenco Attributed Resources nella risorsa nella pagina dei metadati della clausola FROM. Nel caso della risorsa ad_group, puoi selezionare anche i campi dalla risorsa campaign. Verrà restituito automaticamente il campo resource_name di qualsiasi Attributed Resources con almeno un campo nella clausola SELECT, anche quando il campo resource_name non è incluso esplicitamente nella query.

Analogamente alla selezione di Attributed Resource campi, puoi anche selezionare Segmenting Resource campi. Se una determinata risorsa ha un elenco Segmenting Resources nella pagina dei metadati, la selezione dei campi da una delle risorse elencate determina un'ulteriore segmentazione della query in base al valore resource_name restituito di Segmenting Resource. Ad esempio, la risorsa campaign è elencata come Segmenting Resource per la risorsa campaign_budget. Se selezioni un campo della campagna, ad esempio campaign.name, dalla risorsa campaign_budget, non solo il campo campaign.name verrà restituito, ma il campo campaign.resource_name verrà restituito e segmentato.

Selezionabilità 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 quali campi dei segmenti sono compatibili tra loro, puoi rivedere l'elenco selectable_with dei segmenti nella clausola SELECT.

Nel caso della risorsa ad_group, sono disponibili oltre 50 segmenti che puoi selezionare. 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, limiterai i segmenti disponibili ancora 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 con FROM ad_group_ad, il 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 saranno più basse perché verrebbero escluse le metriche diverse dalle parole chiave.

Regole per i segmenti nella clausola WHERE

Quando un segmento è nella clausola WHERE, deve trovarsi anche nella clausola SELECT. Fanno eccezione i seguenti segmenti di data, chiamati segmenti di data 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 clausola SELECT.

  • Se uno di questi segmenti si trova nella clausola SELECT, è necessario specificare un intervallo di date finito composto da segmenti di date principali nella clausola WHERE (i segmenti di data non devono essere gli stessi specificati in SELECT).

Esempi

Non valido: poiché segments.date si trova nella clausola SELECT, devi specificare un intervallo di date finito 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 necessariamente apparire 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 segmentati 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 segmentati 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 segmentati per trimestre e poi per mese per tutti i mesi dell'intervallo dell'anno.
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 è anche implicitamente segmentata per gruppo di annunci, non solo per un termine di ricerca, come risulta dalla struttura del suo nome risorsa, che include anche il gruppo di annunci. Pertanto, visualizzerai alcune righe apparentemente duplicate con gli stessi termini di ricerca visualizzati nei risultati mentre 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). Possiamo quindi concludere che l'API ha funzionato come previsto e in questo caso non ha restituito oggetti duplicati.