Segmentazione

La segmentazione è disponibile nell'interfaccia utente di Google Ads come menu separato. Puoi implementare la segmentazione nell'API Google Ads aggiungendo il campo appropriato a una query. Ad esempio, supponiamo che tu aggiunga segments.device a una query. In questo modo, viene generato un report con una riga per ogni combinazione di dispositivo e risorsa specificata nella clausola FROM, con 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 sono simili 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"
      }
    }
  ]
}

In questo risultato di esempio, gli attributi del primo e del secondo oggetto, incluso il nome della risorsa, sono gli stessi. Le impressioni sono segmentate per dispositivo, pertanto possono essere restituiti 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 restituito e le metriche vengono segmentate in base a questo campo, anche se resource_namenon è incluso esplicitamente nella query. Ad esempio, se specifichi ad_group come risorsa nella clausola FROM, ad_group.resource_name viene restituito automaticamente e le metriche vengono segmentate implicitamente in base a questo valore a livello di ad_group.

Quindi, per questa query:

SELECT metrics.impressions
FROM ad_group

Riceverai 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"
      }
    }
  ]
}

Il campo resource_name di adGroup viene sempre restituito perché ad_group è specificato come risorsa nella clausola FROM.

search_term_view

La risorsa search_term_view viene anche segmentata implicitamente per gruppo di annunci, non solo per termine di ricerca, come indicato dalla struttura del nome della risorsa, che include anche il gruppo di annunci. Pertanto, potresti ricevere righe apparentemente duplicate con gli stessi termini di ricerca visualizzati nei risultati quando queste righe appartengono a gruppi di annunci diversi:

{
  "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"
      }
    }
  ]
}

Sebbene i due oggetti restituiti in questo esempio sembrino duplicati, i loro nomi delle risorse sono in realtà diversi, in particolare nella parte dell'ID gruppo di annunci. Ciò significa che il termine di ricerca "google photos" è attribuito a due gruppi di annunci (ID 2222222222 e 33333333333) nella stessa data (2024-06-15). Pertanto, l'API ha funzionato come previsto e in questo caso non ha restituito oggetti duplicati.

Campi di segmenti selezionabili

Non tutti i campi dei segmenti sono selezionabili per una determinata risorsa nella clausola FROM. Ad esempio, supponiamo che tu continui a eseguire query sulla risorsa ad_group. Affinché un campo di segmento sia selezionabile dalla risorsa ad_group, 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.

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 selezionare anche i campi della risorsa campaign. Il campo resource_name di qualsiasi Attributed Resources con almeno un campo nella clausola SELECT viene 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 Segmenting Resources nella pagina dei metadati, la selezione dei campi da una delle risorse elencate comporta un'ulteriore segmentazione della query in base al resource_name restituito di quel Segmenting Resource. Ad esempio, scoprirai 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 anche il campo campaign.resource_name e lo segmenta.

Selezionabilità tra segmenti e metriche

Un determinato campo di segmento potrebbe non essere compatibile con alcuni degli altri campi di segmento o con alcuni dei campi di metrica. Per identificare i campi dei segmenti compatibili tra loro, consulta 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 nella clausola SELECT, limiti i segmenti disponibili che ti rimangono da selezionare all'intersezione di questi due elenchi.

Vincoli dei segmenti congiunti

Alcuni campi dei segmenti hanno vincoli di selezione espliciti che richiedono che vengano richiesti insieme a un segmento principale nella clausola SELECT:

Filtro implicito in base alla selezione del segmento

Quando selezioni determinati campi di segmenti nella query, l'API Google Ads potrebbe filtrare implicitamente i risultati per includere solo le righe in cui il segmento è applicabile e ha un valore.

Impatto di segments.keyword.*

Un esempio comune e importante di questo comportamento si verifica quando si seleziona un campo in segments.keyword (ad esempio segments.keyword.info.text e segments.keyword.ad_group_criterion):

  • Esclusione del traffico non correlato alle parole chiave: se includi un campo segments.keyword.* nella clausola SELECT, i risultati vengono limitati solo alle righe direttamente associate a un criterio del gruppo di annunci con parole chiave della rete di ricerca.
  • Tipi di campagne interessati: di conseguenza, i dati dei tipi di campagne o dei gruppi di annunci che non si basano sulle parole chiave per la rete di ricerca vengono esclusi dai risultati. Ciò include, a titolo esemplificativo:
    • Annunci dinamici della rete di ricerca (DSA): poiché i target DSA si basano sui contenuti del sito web anziché sulle parole chiave.
    • Campagne Shopping: utilizzano gruppi di prodotti anziché parole chiave.
    • Campagne Performance Max: sebbene Performance Max possa essere pubblicato sulla rete di ricerca, i relativi report non sono in genere segmentati in base agli stessi criteri delle parole chiave.
  • Rete Display: i campi segments.keyword.* riguardano le parole chiave utilizzate sulla rete di ricerca. Non segmentano in base alle parole chiave della Rete Display o ad altri metodi di targeting per la pubblicità display.

Regole per i segmenti nella clausola WHERE

Quando un segmento si trova nella clausola WHERE, deve trovarsi anche nella clausola SELECT. L'eccezione a questa regola sono i seguenti segmenti di data, definiti segmenti di data principali:

  • segments.date
  • segments.week
  • segments.month
  • segments.quarter
  • segments.year

Regole per i campi dei segmenti di data principali

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 essere visualizzati nella clausola SELECT.
  • Se uno di questi segmenti è presente nella clausola SELECT, nella clausola WHERE deve essere specificato un intervallo di date finito composto da segmenti di data principali. I segmenti di date non devono necessariamente 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 nell'intervallo di date inclusivo. Tieni presente che segments.date non deve necessariamente apparire nella clausola SELECT.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date >= '2024-01-01'
  AND segments.date <= '2024-01-31'
Valida: questa query restituisce i nomi delle campagne e i clic segmentati per data per tutti i giorni dell'intervallo di date inclusivo.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date >= '2024-01-01'
  AND segments.date <= '2024-01-31'
Valida: questa query restituisce i nomi delle campagne e i clic segmentati per mese per tutti i giorni nell'intervallo di date inclusivo.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date >= '2024-01-01'
  AND segments.date <= '2024-01-31'
Valida: questa query restituisce i nomi delle campagne e i clic segmentati per trimestre e poi per mese per tutti i mesi dell'intervallo di anni inclusivo.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year >= 2020
  AND segments.year <= 2024