La segmentation, disponible dans l'UI Google Ads en tant que menu distinct, peut être implémentée dans l'API Google Ads en ajoutant simplement le champ approprié à une requête. Par exemple, si vous ajoutez segments.device
à une requête, un rapport comportant une ligne pour chaque combinaison d'appareil et de la ressource spécifiée dans la clause FROM
est généré, et les valeurs statistiques (impressions, clics, conversions, etc.) sont réparties entre elles.
Dans l'interface utilisateur 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
Les résultats de l'envoi de cette requête à GoogleAdsService.SearchStream
se présenteraient comme suit:
{
"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 du premier et du deuxième objet, y compris le nom de la ressource, sont les mêmes. 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 en fonction de 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 implicitement par rapport à ce niveau au niveau du groupe d'annonces.
Pour cette requête,
SELECT metrics.impressions
FROM ad_group
Vous obtiendrez une chaîne JSON semblable à 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"
}
}
]
}
Notez que le champ resource_name
de adGroup
est toujours renvoyé, car ad_group
a été spécifié comme ressource dans la clause FROM
.
Champs de segment sélectionnables
Tous les champs de segment ne sont pas sélectionnables pour une ressource donnée dans la clause FROM
.
Par exemple, nous allons continuer à effectuer des requêtes à partir de la ressource ad_group
. Pour qu'un champ de segment soit sélectionnable dans la ressource ad_group, ce champ 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 certaines ressources, vous pouvez avoir la possibilité de joindre implicitement des ressources associées en sélectionnant leurs champs à côté des champs 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 tout Attributed Resources
contenant 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 comporte une liste Segmenting Resources
sur sa page de métadonnées, la sélection de champs dans l'une de ces ressources listées entraîne un segmentage supplémentaire de la requête par le nom de ressource renvoyé de cette 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
, dans la ressource campaign_budget, le champ campaign.name sera renvoyé, mais le champ campaign.resource_name
sera également renvoyé et segmenté.
Sélection entre les segments et les métriques
Il est possible qu'un champ de segment donné ne soit pas compatible avec certains des autres champs de segment ou avec certains des champs de métrique. 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. Toutefois, la liste selectable_with
pour segments.hotel_check_in_date
est un ensemble beaucoup plus restreint de segments compatibles. Autrement dit, si vous ajoutez le champ segments.hotel_check_in_date
à la clause SELECT
, vous limiterez les segments disponibles à sélectionner à l'intersection de ces deux listes.
- Lorsque vous ajoutez certains segments, les métriques de la ligne récapitulative peuvent diminuer
- Lorsque
segments.keyword.info.match_type
est ajouté à une requête avecFROM ad_group_ad
, ce segment indique à la requête d'obtenir uniquement 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 seraient inférieures, car elles excluraient toutes les métriques autres que celles des 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, appelés segments de date principaux, font exception à cette règle:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Règles pour les champs du segment de date de base
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 clauseSELECT
.Si l'un de ces segments figure dans la clause
SELECT
, une plage de dates limitée composée de segments de date de base doit être spécifiée dans la clauseWHERE
(les segments de date ne doivent pas nécessairement être les mêmes que ceux spécifiés dansSELECT
).
Exemples
Non valide:comme segments.date figure dans la clause SELECT , vous devez spécifier une plage de dates limitée 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 des campagnes et les clics enregistré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 > '2020-01-01' AND segments.date < '2020-02-01' |
Valide:cette requête renvoie les noms des campagnes et les clics segmentés par date pour tous les jours de la période. |
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 période. |
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 et les clics des campagnes 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 > 2015 AND segments.year < 2020 |
search_term_view
Notez que pour la ressource search_term_view
, elle est également segmentée implicitement par groupe d'annonces, et non seulement par terme de recherche, comme le montre la structure de son nom de ressource, qui inclut également le groupe d'annonces. Par conséquent, vous verrez des lignes apparemment en double avec les mêmes termes de recherche dans vos résultats, alors qu'en réalité, elles appartiennent à un autre groupe d'annonces:
{
"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).
Nous pouvons donc conclure que l'API a fonctionné comme prévu et qu'elle n'a pas renvoyé d'objets en double dans ce cas.