Podział na segmenty, który jest dostępny w interfejsie Google Ads jako osobne menu, można wdrożyć w interfejsie Google Ads API, dodając do zapytania odpowiednie pole. Na przykład dodanie do zapytania segments.device
spowoduje utworzenie raportu z wierszem dla każdej kombinacji urządzenia i określonego zasobu w klauzuli FROM
, a wartości statystyczne (wyświetlenia, kliknięcia, konwersje itp.) zostaną podzielone między te elementy.
W interfejsie Google Ads możesz używać tylko jednego segmentu naraz, ale za pomocą interfejsu API możesz określać 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
będą wyglądać 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ładowym wyniku atrybuty pierwszego i drugiego obiektu obejmujące nazwę zasobu są takie same. Wyświetlenia są podzielone na segmenty według urządzenia, dzięki czemu dla tej samej kampanii mogą zostać zwrócone co najmniej 2 obiekty.
Pośrednicza segmentacja
Każdy raport jest wstępnie podzielony na segmenty według zasobu określonego w klauzuli FROM
. Pole resource_name zasobu w klauzuli FROM
jest zwracane, a wskaźniki są przez nią segmentowane, nawet jeśli pole resource_name nie zostało wyraźnie uwzględnione w zapytaniu. Jeśli na przykład w klauzuli FROM
jako zasób określisz ad_group
, wartość ad_group.resource_name
będzie zwracana automatycznie, a dane będą niejawnie segmentowane na poziomie grupy reklam.
W tym zapytaniu
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"
}
}
]
}
Pamiętaj, że pole resource_name
elementu adGroup
jest zawsze zwracane, ponieważ w klauzuli FROM
jako zasób określono ad_group
.
Pola segmentów do wyboru
W klauzuli FROM
nie wszystkie pola segmentów można wybrać dla danego zasobu.
Na przykład nadal będziemy wysyłać zapytania z zasobu ad_group
. Aby w zasobie ad_group można było wybrać pole segmentu, musi ono znajdować się na liście Segments
dotyczącej grupy ad_group. Lista Segments
to żółta część tabeli dostępnych pól na stronie metadanych zasobu ad_group
.
Segmenty zasobów
Podczas wybierania z niektórych zasobów możesz skorzystać z opcji pośredniego złączenia powiązanych zasobów, wybierając ich pola obok pól zasobu w klauzuli FROM
. Te powiązane zasoby znajdziesz na liście Attributed Resources
w zasobie na stronie metadanych klauzuli FROM
. W przypadku zasobu ad_group
zobaczysz, że możesz też wybrać pola z zasobu campaign
. Pole resource_name dowolnego elementu Attributed Resources
, które ma co najmniej 1 pole w klauzuli SELECT
, zostanie zwrócone automatycznie, nawet jeśli pole resource_name nie zostało wyraźnie uwzględnione w zapytaniu.
Podobnie jak przy wybieraniu pól Attributed Resource
, możesz też wybrać pola Segmenting Resource
. Jeśli dany zasób ma na stronie metadanych listę Segmenting Resources
, to wybranie pól z jednego z wymienionych zasobów spowoduje dalsze posegmentowanie zapytania według zwróconej nazwy zasobu Segmenting Resource
. Zobaczysz na przykład, że zasób campaign
jest wymieniony jako Segmenting Resource
dla zasobu campaign_budget
. Wybór dowolnego pola kampanii, np. campaign.name
, z zasobu campaign_budget nie tylko spowoduje zwrócenie pola campaign.name, ale też zwrócenie pola campaign.resource_name
i podzielenie go na segmenty.
Możliwość wyboru między segmentami i danymi
Dane pole segmentu może być niezgodne z innymi polami segmentu 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
możesz wybrać ponad 50 dostępnych segmentów. Lista selectable_with
związana z segments.hotel_check_in_date
to jednak znacznie mniejszy zbiór 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 części wspólnej tych 2 list.
- Gdy dodasz niektóre segmenty, dane w wierszu podsumowania mogą się zmniejszyć
- Gdy dodasz parametr
segments.keyword.info.match_type
do zapytania z wartościąFROM ad_group_ad
, segment ten będzie informował zapytanie, aby tylko pobierało wiersze danych ze słowami kluczowymi oraz usuwało każdy wiersz niepowiązany ze słowem kluczowym. W takim przypadku dane byłyby niższe, ponieważ wykluczałyby wszelkie dane niezwiązane ze słowami kluczowymi.
Reguły segmentów w klauzuli WHERE
Jeśli segment znajduje się w klauzuli WHERE
, musi też znajdować się w klauzuli SELECT
. Wyjątkiem od tej reguły są te segmenty daty, nazywane głównymi segmentami 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ć w klauzuli
WHERE
, nie pojawiając się w klauzuliSELECT
.Jeśli którykolwiek z tych segmentów znajduje się w klauzuli
SELECT
, w klauzuliWHERE
należy podać ograniczony zakres dat składający się z podstawowych segmentów dat (segmenty dat nie muszą być takie same jak określone w parametrzeSELECT
).
Przykłady
Nieprawidłowy: segments.date znajduje się w klauzuli SELECT , dlatego w klauzuli WHERE musisz określić 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 zebrane w wybranym zakresie dat. Pamiętaj, że w klauzuli SELECT nie musi występować ciąg segments.date .
|
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 posegmentowane 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 posegmentowane według miesiąca ze 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 posegmentowane według kwartału, a następnie miesiąca ze wszystkich miesięcy w zakresie rocznym. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2015 AND segments.year < 2020 |
search_term_view
Pamiętaj, że zasób search_term_view
jest też domyślnie podzielony na segmenty według grupy reklam, a nie tylko wyszukiwanego hasła, co odzwierciedla struktura jego nazwy zasobu, która zawiera też grupę reklam. W efekcie w wynikach mogą pojawić się pozornie zduplikowane wiersze zawierające te same wyszukiwane hasła, 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ż dwa zwrócone obiekty w tym przykładzie wydają się być duplikatami, ich nazwy zasobów w rzeczywistości są różne, zwłaszcza w części „grupa reklam”. Oznacza to, że wyszukiwane hasło „zdjęcia Google” zostało przypisane do 2 grup reklam (identyfikatory 2222222222
i 33333333333
) z tego samego dnia (15.06.2015).
Możemy więc wyciągnąć, że w tym przypadku interfejs API działa zgodnie z oczekiwaniami i nie zwrócił zduplikowanych obiektów.