Segmentacja, dostępna w interfejsie Google Ads jako osobne menu, można zaimplementować w interfejsie Google Ads API, dodając po prostu odpowiednie pole do zapytania. Na przykład dodanie do zapytania zapytania segments.device
skutkuje raportem zawierającym wiersz z każdą kombinacją urządzeń i określonym zasobem w klauzuli FROM
oraz rozdzielonymi wartościami statystycznymi (wyświetlenia, kliknięcia, konwersje itd.).
W interfejsie Google Ads można używać tylko jednego segmentu naraz, a za pomocą interfejsu API możesz określić wiele segmentów w tym samym zapytaniu.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
Wyniki wysłania tego zapytania do GoogleAdsService.SearchStream
wyglądają mniej więcej 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 powyższym przykładzie wynikowym atrybuty pierwszego i drugiego obiektu, w tym nazwy zasobu, są takie same. Wyświetlenia są podzielone na segmenty według urządzenia, więc w jednej kampanii mogą zostać zwrócone co najmniej 2 obiekty.
Podział bezpośredni
Każdy raport jest początkowo podzielony na segmenty według zasobu określonego w klauzuli FROM
. Pole „resource_name” zasobu w klauzuli FROM
jest zwracane, a wskaźniki są podzielone na segmenty za pomocą segmentu, nawet jeśli pole resource_name nie jest wyraźnie uwzględnione w zapytaniu. Gdy na przykład określisz w FROM
klauzuli ad_group
, zasób ad_group.resource_name
będzie automatycznie zwracany i dane będą domyślnie segmentowane według niego na poziomie ad_group.
W przypadku tego zapytania
SELECT metrics.impressions
FROM ad_group
otrzymasz ciąg znaków 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"
}
}
]
}
Zauważ, że pole resource_name
w adGroup
jest zawsze zwracane, ponieważ klauzulę ad_group
określono jako zasób w klauzuli FROM
.
Pola segmentów, które można wybrać
Nie wszystkie pola segmentów można wybrać dla danego zasobu w klauzuli FROM
.
W ramach przykładu będziemy nadal wysyłać zapytania z zasobu ad_group
. Aby można było wybrać pole segmentu z zasobu ad_group, musi się ono znajdować na liście Segments
grupy reklam ad_group. Lista Segments
to żółta część tabeli dostępnych pól na stronie metadanych zasobu ad_group
.
Podział zasobów na segmenty
Podczas wybierania zasobów z niektórych zasobów możesz domyślnie dołączyć do powiązanych zasobów, wybierając ich pola obok pól zasobu w klauzuli FROM
. Te powiązane materiały można znaleźć na liście Attributed Resources
zasobu na stronie metadanych klauzuli FROM
. W przypadku zasobu ad_group
zobaczysz również, że możesz wybrać pola z zasobu campaign
. Pole resource_name dowolnego zasobu Attributed Resources
z co najmniej 1 polem w klauzuli SELECT
zostanie automatycznie zwrócone, nawet jeśli pole resource_name nie zostanie bezpośrednio uwzględnione w zapytaniu.
Podobnie jak w przypadku wybrania pól Attributed Resource
, możesz też wybrać Segmenting Resource
pola. Jeśli na stronie metadanych danego zasobu znajduje się lista Segmenting Resources
, wybór pól z jednego z tych zasobów spowoduje dalsze podzielenie zapytania na segmenty według zwróconej wartości resource_name tego zasobu Segmenting Resource
. Na przykład zobaczysz, że zasób campaign
jest wyświetlany jako Segmenting Resource
dla zasobu campaign_budget
. Wybór pola kampanii, np. campaign.name
, w zasobie kampanii_budżet nie tylko spowoduje zwrócenie pola „campaign.name”, ale też sprawi, że pole campaign.resource_name
zostanie zwrócone i posegmentowane.
Możliwość wyboru segmentów i danych
Pole pola segmentu może być niezgodne z niektórymi innymi polami segmentów lub z niektórymi polami danych. Aby sprawdzić, które pola segmentów są ze sobą zgodne, możesz przejrzeć listę selectable_with
segmentów w klauzuli SELECT
.
W przypadku zasobu ad_group
masz do wyboru ponad 50 dostępnych segmentów. Lista selectable_with
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 na przecięciu tych dwóch list.
- Podczas dodawania niektórych segmentów dane w wierszu podsumowania mogą się zmniejszyć
- Gdy
segments.keyword.info.match_type
dodaje zapytanie doFROM ad_group_ad
, ten segment informuje tylko wiersze danych, które zawierają słowa kluczowe, i usuwa wszystkie wiersze, które nie są powiązane ze słowem kluczowym. W tym przypadku dane byłyby niższe, bo wykluczałyby wszystkie dane niezwiązane ze słowami kluczowymi.
Reguły segmentów w klauzuli WHERE
Gdy segment jest objęty klauzulą WHERE
, musi też znajdować się w klauzuli SELECT
. Wyjątkiem od tej reguły są następujące segmenty dat określane jako podstawowe segmenty dat:
segments.date
segments.week
segments.month
segments.quarter
segments.year
Reguły dotyczące pól podstawowego segmentu dat
Segmenty segments.date
, segments.week
, segments.month
, segments.quarter
i segments.year
działają w ten sposób:
Te segmenty można filtrować za pomocą klauzuli
WHERE
, ale nie w klauzuliSELECT
.Jeśli jeden z tych segmentów znajduje się w klauzuli
SELECT
, ograniczony zakres dat złożony z podstawowych segmentów dat musi być określony w klauzuliWHERE
(segmenty dat nie muszą być takie same jak te określone wSELECT
).
Przykłady
Nieprawidłowe: segments.date jest w klauzuli SELECT , więc musisz podać określony zakres dat w klauzuli WHERE 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 zakresie dat. Pamiętaj, że segments.date nie musi występować w klauzuli SELECT .
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone na segmenty według daty dla wszystkich dni w zakresie dat. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone na miesiące według wszystkich dni w zakresie dat. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone na segmenty według kwartału, a następnie według wszystkich miesięcy w zakresie roku. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2015 AND segments.year < 2020 |
wyszukiwane hasło
Pamiętaj, że w przypadku zasobu search_term_view
jest on domyślnie podzielony na segmenty według grupy reklam, a nie tylko wyszukiwanego hasła, co odzwierciedla struktura nazwy zasobu, do której należy też grupa reklam. Dlatego w wynikach wyszukiwania pojawią się pozornie powielone wiersze z tymi samymi wyszukiwanymi słowami, które w rzeczywistości będą należeć do innej grupy reklam:
{
"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"
}
}
]
}
Chociaż oba obiekty w tym przykładzie wydają się duplikatami, ich nazwy zasobów w rzeczywistości są różne, zwłaszcza w części „grupy reklam”. Oznacza to, że wyszukiwane hasło „zdjęcia Google” jest przypisane do obu grup reklam (identyfikatory 2222222222
i 33333333333
) z tej samej daty (2015-06-15).
Wnioskujemy, że interfejs API działał prawidłowo i nie zwrócił w tym przypadku zduplikowanych obiektów.