Podział na segmenty

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

  • Jeśli którykolwiek z tych segmentów znajduje się w klauzuli SELECT, w klauzuli WHERE 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 parametrze SELECT).

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.