Segmentation

La segmentation, disponible dans l'interface utilisateur Google Ads sous la forme d'un menu distinct, peut être implémentée dans l'API Google Ads en ajoutant simplement le champ approprié à une requête. Par exemple, l'ajout de segments.device à une requête génère un rapport avec une ligne pour chaque combinaison d'appareil et de ressource spécifiée dans la clause FROM, ainsi que les valeurs statistiques (impressions, clics, conversions, etc.) réparties entre elles.

Alors que dans l'interface utilisateur Google Ads, vous ne pouvez utiliser qu'un seul segment à la fois, l'API vous permet de spécifier plusieurs segments dans la même requête.

SELECT
  campaign.name,
  campaign.status,
  segments.device,
  metrics.impressions
FROM campaign

Les résultats de l'envoi de cette requête à GoogleAdsService.SearchStream ressembleraient à cette chaîne 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"
      }
    },
    ...
  ]
}

Notez que dans l'exemple de résultat ci-dessus, les attributs des premier et deuxième objets, y compris le nom de ressource, sont identiques. Les impressions sont segmentées par appareil. Par conséquent, deux objets ou plus peuvent être renvoyés pour la même campagne.

Segmentation implicite

Chaque rapport est initialement segmenté en fonction de la ressource spécifiée dans la clause FROM. Le champ resource_name de la ressource dans la clause FROM est renvoyé, et les métriques sont segmentées en fonction de ce champ, même si le champ resource_name n'est pas explicitement inclus dans la requête. Par exemple, lorsque vous spécifiez ad_group comme ressource dans la clause FROM, ad_group.resource_name est automatiquement renvoyé, et les métriques sont implicitement segmentées par rapport à cette ressource au niveau du groupe d'annonces.

Donc, pour cette requête,

SELECT metrics.impressions
FROM ad_group

vous obtiendrez une chaîne JSON comme ceci:

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

Notez que le champ resource_name de adGroup est toujours renvoyé, car ad_group a été spécifié en tant que ressource dans la clause FROM.

Champs de segment sélectionnables

Tous les champs de segment ne peuvent pas être sélectionnés pour une ressource donnée dans la clause FROM. Par exemple, nous allons continuer à interroger la ressource ad_group. Pour qu'un champ de segment puisse être sélectionné à partir de la ressource "ad_group", ce champ doit exister dans la liste Segments du groupe "ad_group". La liste Segments correspond à la partie jaune de la table des champs disponibles sur la page des métadonnées de la ressource ad_group.

Segmenter les ressources

Lorsque vous sélectionnez certaines ressources, vous pouvez avoir la possibilité de joindre implicitement des ressources associées en sélectionnant leurs champs à côté de ceux de la ressource dans la clause FROM. Ces ressources associées se trouvent dans la liste Attributed Resources de la ressource sur la page de métadonnées de la clause FROM. Dans le cas de la ressource ad_group, vous verrez que vous pouvez également sélectionner des champs à partir de la ressource campaign. Le champ resource_name de n'importe quel Attributed Resources ayant au moins un champ dans la clause SELECT est automatiquement renvoyé, même si le champ resource_name n'est pas explicitement inclus dans la requête.

Comme pour la sélection de champs Attributed Resource, vous pouvez également sélectionner des champs Segmenting Resource. Si une ressource donnée possède une liste Segmenting Resources sur sa page de métadonnées, la sélection des champs de l'une des ressources listées entraîne la segmentation de la requête par le resource_name renvoyé de ce Segmenting Resource. Par exemple, vous constaterez que la ressource campaign est répertoriée en tant que Segmenting Resource pour la ressource campaign_budget. Si vous sélectionnez un champ de campagne, tel que campaign.name, dans la ressource campaign_budget, le champ campaign.name sera non seulement renvoyé, mais le champ campaign.resource_name sera également renvoyé et segmenté.

Sélection entre segments et métriques

Un champ de segment donné peut ne pas être compatible avec certains des autres champs de segment ou avec certains champs de métriques. Pour identifier les champs de segment compatibles les uns avec les autres, vous pouvez consulter la liste selectable_with des segments dans la clause SELECT.

Dans le cas de la ressource ad_group, vous pouvez sélectionner plus de 50 segments. Cependant, la liste selectable_with pour segments.hotel_check_in_date est un ensemble beaucoup plus réduit de segments compatibles. Cela signifie que si vous ajoutez le champ segments.hotel_check_in_date à la clause SELECT, vous limiterez les segments disponibles qu'il vous reste à sélectionner à l'intersection de ces deux listes.

Lorsque vous ajoutez des segments, les métriques de la ligne récapitulative peuvent diminuer
Lorsque segments.keyword.info.match_type est ajouté à une requête avec FROM ad_group_ad, ce segment indique à la requête de récupérer uniquement les lignes de données contenant des mots clés et de supprimer toutes les lignes qui ne sont pas associées à un mot clé. Dans ce cas, les métriques seraient inférieures, car les métriques autres que les mots clés seraient exclues.

Règles applicables aux segments dans la clause WHERE

Lorsqu'un segment se trouve dans la clause WHERE, il doit également figurer dans la clause SELECT. Les segments de date suivants, appelés segments de dates principaux, font exception à cette règle:

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

Règles pour les champs des segments de dates principaux

Les segments segments.date, segments.week, segments.month, segments.quarter et segments.year fonctionnent comme suit:

  • Ces segments peuvent être filtrés dans la clause WHERE sans apparaître dans la clause SELECT.

  • Si l'un de ces segments se trouve dans la clause SELECT, une plage de dates finie composée de segments de date principaux doit être spécifiée dans la clause WHERE (les segments de date ne doivent pas nécessairement être les mêmes que ceux spécifiés dans l'élément SELECT).

Exemples

Non valide:comme segments.date se trouve dans la clause SELECT, vous devez spécifier une plage de dates finie dans la clause WHERE pour segments.date, segments.week, segments.month, segments.quarter ou segments.year.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Valide:cette requête renvoie les noms de campagne et les clics enregistrés pendant la plage de dates. Notez que segments.date n'a pas besoin d'apparaître dans la clause SELECT.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valide:cette requête renvoie les noms de campagne et les clics segmentés par date pour tous les jours compris dans la plage de dates.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valide:cette requête renvoie les noms des campagnes et les clics segmentés par mois pour tous les jours de la plage de dates.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valide:cette requête renvoie les noms de campagne et les clics segmentés par trimestre, puis par mois pour tous les mois de la plage d'années.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

Notez que pour la ressource search_term_view, elle est implicitement segmentée par groupe d'annonces, et pas seulement par terme de recherche, comme l'indique la structure de son nom de ressource, qui inclut également les groupes d'annonces. Par conséquent, vous obtiendrez des lignes apparemment en double avec les mêmes termes de recherche apparaissant dans vos résultats, alors qu'en réalité, ces lignes appartiendraient à un groupe d'annonces différent:

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

Bien que les deux objets renvoyés dans cet exemple semblent être des doublons, leurs noms de ressources sont en réalité différents, en particulier dans la partie "groupe d'annonces". Cela signifie que le terme de recherche "google photos" est attribué aux deux groupes d'annonces (ID 2222222222 et 33333333333) à la même date (15/06/2015). Ainsi, nous pouvons en conclure que l'API a fonctionné comme prévu et n'a pas renvoyé d'objets en double dans ce cas.