Segmentacja jest dostępna w interfejsie Google Ads jako osobne menu. Segmentację możesz zaimplementować w interfejsie Google Ads API, dodając odpowiednie pole do zapytania. Załóżmy na przykład, że do zapytania dodajesz parametr segments.device
. W wyniku powstaje raport z wierszami dla każdej kombinacji urządzenia i zasobu określonego w klauzuli FROM
oraz z wartościami statystycznymi (wyświetlenia, kliknięcia, konwersje itp.) podzielonymi między te wiersze.
W interfejsie Google Ads można używać tylko 1 segmentu naraz, ale w interfejsie API możesz określać w tym samym zapytaniu wiele segmentów.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
Wyniki przesłania tego zapytania do GoogleAdsService.SearchStream
będą wyglądać tak:
{
"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"
}
},
...
]
}
W tym przykładowym wyniku atrybuty pierwszego i drugiego obiektu, w tym nazwa zasobu, są takie same. Wyświetlenia są dzielone według urządzenia, dlatego w przypadku tej samej kampanii mogą zostać zwrócone co najmniej 2 obiekty.
Podział na segmenty w sposób domyślny
Każdy raport jest początkowo dzielony na segmenty według zasobu określonego w klauzuli FROM
. W klauzuli FROM
zwracane jest pole resource_name
zasobu, a dane są dzielone na segmenty na jego podstawie, nawet jeśli pole resource_name nie jest wyraźnie uwzględnione w zapytaniu. Jeśli np. w klauzuli FROM
jako zasób podasz parametr ad_group
, automatycznie zwrócony zostanie parametr ad_group.resource_name
, a dane zostaną przypisane do niego w ramach segmentu ad_group.
W przypadku tego zapytania
SELECT metrics.impressions
FROM ad_group
otrzymasz ciąg JSON podobny do tego:
{
"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"
}
}
]
}
Pole resource_name
obiektu adGroup
jest zawsze zwracane, ponieważ ad_group
jest określone jako zasób w klauzuli FROM
.
Pola segmentów do wyboru
Nie wszystkie pola segmentu są dostępne w przypadku danego zasobu w klauzuli FROM
.
Załóżmy na przykład, że nadal wysyłasz zapytanie z zasobu ad_group
. Aby pole segmentu było dostępne do wybrania z zasosobu ad_group
, musi ono występować na liście Segments
w przypadku pola ad_group. Lista Segments
to żółta część tabeli dostępnych pól na stronie metadanych zasobu ad_group
.
Zasoby segmentu
Podczas wybierania niektórych zasobów możesz mieć opcję dołączenia do nich zasobów powiązanych, wybierając ich pola obok pól zasobu w klauzuli FROM
. Te powiązane zasoby znajdziesz na liście Attributed Resources
zasobu na stronie metadanych klauzuli FROM
. W przypadku zasobu ad_group
możesz też wybierać pola z zasosobu campaign
. Pole resource_name
dowolnego obiektu Attributed Resources
, który zawiera co najmniej 1 pole w nawiasach klamrowych SELECT
, zostanie zwrócone automatycznie, nawet jeśli pole resource_name nie jest w żaden sposób uwzględnione w zapytaniu.
Podobnie jak w przypadku pól Attributed Resource
możesz też wybierać pola Segmenting Resource
. Jeśli dana usługa ma listę Segmenting Resources
na stronie metadanych, a Ty wybierzesz pola z jednego z tych wymienionych zasobów, zapytanie zostanie podzielone na kolejne segmenty na podstawie zwróconego pola resource_name
tego zasobu.Segmenting Resource
Na przykład zasób campaign
jest wymieniony jako Segmenting Resource
w przypadku zasobu campaign_budget
. Wybranie dowolnego pola kampanii, np. campaign.name
, z zasosobu campaign_budget
powoduje nie tylko zwrócenie pola campaign.name
, ale też zwrócenie pola campaign.resource_name
i dzielenie danych na podstawie tego ostatniego.
Możliwość wyboru między segmentami a danymi
Podane pole segmentu może być niezgodne z niektórymi innymi polami segmentu lub polami danych. Aby sprawdzić, które pola segmentu są ze sobą zgodne, sprawdź listę selectable_with
segmentów w klauzuli SELECT
.
W przypadku zasobu ad_group
dostępnych jest ponad 50 segmentów, z których możesz wybierać. Lista selectable_with
dla segments.hotel_check_in_date
zawiera jednak znacznie mniejszy zestaw zgodnych segmentów. Oznacza to, że jeśli dodasz pole segments.hotel_check_in_date
do klauzuli SELECT
, ograniczysz dostępne segmenty do wyboru do przecięcia tych 2 list.
Gdy dodasz określone segmenty, dane w wierszu podsumowania mogą się zmniejszyć. Gdy do zapytania z użyciem zapytania FROM ad_group_ad
dodasz segment segments.keyword.info.match_type
, zapytanie to będzie tylko pobierać wiersze danych, które zawierają słowa kluczowe, i usuwać wszystkie wiersze, które nie są powiązane ze słowem kluczowym. W takim przypadku dane będą niższe, ponieważ nie będą uwzględniać danych innych niż dotyczące słów kluczowych.
Reguły dotyczące segmentów w klauzuli WHERE
Jeśli segment występuje w klauzuli WHERE
, musi też występować w klauzuli SELECT
. Wyjątkiem od tej reguły są następujące segmenty dat, które są nazywane głównymi segmentami dat:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Reguły dotyczące pól segmentu danych podstawowych
Segmenty segments.date
, segments.week
, segments.month
, segments.quarter
i segments.year
działają w ten sposób:
Te segmenty można filtrować w klauzuli
WHERE
, nie uwzględniając ich w klauzuliSELECT
.Jeśli którykolwiek z tych segmentów znajduje się w klauzuli
SELECT
, w klauzuliWHERE
musisz podać ograniczony zakres dat, który składa się z podstawowych segmentów dat. Segmenty dat nie muszą być takie same jak te określone w ustawieniuSELECT
.
Przykłady
Nieprawidłowe: ponieważ segments.date znajduje się w klauzuli SELECT , musisz w klauzuli WHERE podać ograniczony zakres dat dla segments.date , segments.week , segments.month , segments.quarter lub segments.year .
|
SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia uzyskane w wybranym zakresie dat. Pamiętaj, że w klauzuli SELECT nie musisz uwzględniać wartości segments.date .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według daty we wszystkich dniach z wybranego zakresu dat. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według miesiąca za wszystkie dni w wybranym zakresie dat. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według kwartału, a potem według miesiąca w przypadku wszystkich miesięcy w danym roku. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2019 AND segments.year < 2024 |
search_term_view
Zasób search_term_view
jest też niejawnie dzielony według grupy reklam, a nie tylko według hasła, co widać po strukturze nazwy zasobu, która zawiera też grupę reklam. Dlatego w wynikach mogą się pojawić pozornie zduplikowane wiersze z tymi samymi hasłami wyszukiwania, ale należące do innej grupy reklam.
{
"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"
}
}
]
}
Chociaż 2 zwrócone w tym przykładzie obiekty wyglądają na duplikaty, ich nazwy zasobów są w rzeczywistości różne, zwłaszcza w części „ad group” (grupa reklam). Oznacza to, że w tej samej dacie (15.06.2024) wyszukiwane hasło „zdjęcia google” jest przypisywane do 2 grup reklam (z identyfikatorami 2222222222
i 33333333333
).
Możemy więc stwierdzić, że interfejs API działał zgodnie z oczekiwaniami i w tym przypadku nie zwrócił żadnych duplikatów obiektów.