Podział na segmenty

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

  • 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 klauzuli WHERE (segmenty dat nie muszą być takie same jak te określone w SELECT).

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.