Segmentazione

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 con FROM 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 clausola SELECT.

  • Se uno qualsiasi di questi segmenti si trova nella clausola SELECT, nella clausola WHERE 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 in SELECT).

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.