Segmentation

La segmentation est disponible dans l'UI Google Ads sous forme de menu distinct. Vous pouvez implémenter la segmentation dans l'API Google Ads en ajoutant le champ approprié à une requête. Par exemple, supposons que vous ajoutiez segments.device à une requête. Le rapport obtenu comporte une ligne pour chaque combinaison d'appareil et de ressource spécifiée dans la clause FROM, et les valeurs statistiques (impressions, clics, conversions, etc.) sont réparties entre elles.

Dans l'UI Google Ads, vous ne pouvez utiliser qu'un seul segment à la fois, mais avec l'API, vous pouvez spécifier plusieurs segments dans la même requête.

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

L'envoi de cette requête à GoogleAdsService.SearchStream générera une chaîne JSON semblable à celle-ci :

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

Dans cet exemple de résultat, les attributs du premier et du deuxième objet, y compris le nom de la 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é par 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 par celui-ci, même lorsque 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 segmentées de manière implicite 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 celle-ci :

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

Le champ resource_name de adGroup est toujours renvoyé, car ad_group est spécifié comme 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, supposons que vous continuiez à interroger la ressource ad_group. Pour qu'un champ de segment puisse être sélectionné à partir de la ressource ad_group, il doit figurer dans la liste Segments pour ad_group. La liste Segments correspond à la partie jaune du tableau des champs disponibles sur la page des métadonnées de la ressource ad_group.

Ressources de segment

Lorsque vous sélectionnez des ressources, vous pouvez avoir la possibilité d'effectuer une jointure implicite sur les ressources associées en sélectionnant leurs champs à côté des champs de la ressource dans la clause FROM. Ces ressources associées sont disponibles dans la liste Attributed Resources sur la page des 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 tout Attributed Resources comportant au moins un champ dans la clause SELECT sera automatiquement renvoyé, même lorsque le champ resource_name n'est pas explicitement inclus dans la requête.

Comme pour la sélection de Attributed Resource champs, vous pouvez également sélectionner Segmenting Resource champs. Si une ressource donnée comporte une liste Segmenting Resources sur sa page de métadonnées, la sélection de champs à partir de l'une de ces ressources listées entraînera une segmentation plus poussée de la requête par le resource_name renvoyé de ce Segmenting Resource. Par exemple, vous constaterez que la ressource campaign est listée en tant que Segmenting Resource pour la ressource campaign_budget. Si vous sélectionnez un champ de campagne, comme campaign.name, à partir de la ressource campaign_budget, le champ campaign.name est renvoyé, mais le champ campaign.resource_name est également renvoyé et segmenté.

Possibilité de sélection entre les segments et les métriques

Il est possible qu'un champ de segment donné ne soit pas compatible avec certains autres champs de segment ou avec certains champs de métrique. Pour identifier les champs de segment compatibles entre eux, consultez 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 disponibles. Toutefois, la liste selectable_with pour segments.hotel_check_in_date est un ensemble beaucoup plus restreint de segments compatibles. Cela signifie que si vous ajoutez le champ segments.hotel_check_in_date à la clause SELECT, vous limiterez les segments disponibles que vous pourrez sélectionner à l'intersection de ces deux listes.

Lorsque vous ajoutez certains segments, les métriques de la ligne "Récapitulatif" 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 n'obtenir que les lignes de données contenant des mots clés et de supprimer toute ligne qui n'est pas associée à un mot clé. Dans ce cas, les métriques seront plus faibles, car elles excluent toutes les métriques non liées aux mots clés.

Règles concernant les segments dans la clause WHERE

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

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

Règles pour les champs de segment de date principal

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 SELECT.

Exemples

Non valide : puisque segments.date se trouve dans la clause SELECT, vous devez spécifier une plage de dates finie dans la clause WHERE pour un 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 campagnes et les clics générés au cours de la période. 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 > '2024-01-01'
  AND segments.date < '2024-02-01'
Valide : cette requête renvoie les noms de campagne et les clics segmentés par date pour tous les jours de la plage de dates.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Valide : cette requête renvoie les noms de 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 > '2024-01-01'
  AND segments.date < '2024-02-01'
Valide : cette requête renvoie les noms de campagnes et les clics segmentés par trimestre, puis par mois pour tous les mois de la période.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2019
  AND segments.year < 2024

search_term_view

La ressource search_term_view est également segmentée de manière implicite par groupe d'annonces, et pas seulement par terme de recherche, comme le reflète la structure de son nom de ressource, qui inclut également le groupe d'annonces. Par conséquent, vous obtiendrez des lignes qui semblent être des doublons, avec les mêmes termes de recherche apparaissant dans vos résultats, mais ces lignes appartiennent à un groupe d'annonces différent.

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

Bien que les deux objets renvoyés dans cet exemple semblent être des doublons, leurs noms de ressources sont en fait 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 (2024-06-15). Nous pouvons donc conclure que l'API a fonctionné comme prévu et n'a pas renvoyé d'objets en double dans ce cas.