Podział na segmenty

Segmentacja, dostępna w interfejsie Google Ads jako osobne menu, można zaimplementować w interfejsie Google Ads API, dodając odpowiednie zapytanie do zapytania. Na przykład dodanie do zapytania ciągu segments.device spowoduje wyświetlenie raportu z wierszem dla każdej kombinacji urządzenia i określonego zasobu w klauzuli FROM oraz rozdzielonych między nimi wartości statystycznych (wyświetlenia, kliknięcia, konwersje itp.).

W interfejsie Google Ads można używać tylko 1 segmentu naraz, a za pomocą interfejsu API można określić wiele segmentów w tym samym zapytaniu.

SELECT
  campaign.name,
  campaign.status,
  segments.device,
  metrics.impressions
FROM campaign

Wyniki tego zapytania wysłanego 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ładzie wynik pierwszego i drugiego obiektu, w tym nazwy zasobu, jest taki sam. Wyświetlenia są podzielone na segmenty według urządzenia, więc dla tej samej kampanii można zwrócić co najmniej 2 obiekty.

Pośredni podział

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 i są one podzielone na segmenty, nawet jeśli pole resource_name nie jest wyraźnie uwzględnione w zapytaniu. Jeśli na przykład określisz ad_group jako zasób w klauzuli FROM, wtedy ad_group.resource_name zostanie automatycznie zwrócony, a dane będą domyślnie segmentowane na poziomie reklamy.

W przypadku tego zapytania

SELECT metrics.impressions
FROM ad_group

otrzymasz ciąg znaków w formacie 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 w polu adGroup jest zawsze zwracane, ponieważ klauzula ad_group została określona jako zasób w klauzuli FROM.

Pola segmentów do wyboru

Nie wszystkie pola segmentów można wybrać dla danego zasobu w klauzuli FROM. Na przykład nadal będziemy wysyłać zapytania z zasobu ad_group. Aby można było wybrać pole segmentu z zasobu ad_group, musi ono istnieć na liście Segments dla grupy reklam. Lista Segments to żółta część tabeli pól dostępnych na stronie metadanych zasobu ad_group.

Podział zasobów na segmenty

Podczas wybierania spośród niektórych zasobów możesz domyślnie dołączyć do powiązanych zasobów, zaznaczając ich pola obok pól w klauzuli FROM. Te powiązane zasoby można znaleźć na liście Attributed Resources zasobu w klauzuli FROM na stronie metadanych. W przypadku zasobu ad_group zobaczysz, że możesz też wybrać pola z zasobu campaign. Wartość w polu resource_name dowolnego pola Attributed Resources z co najmniej 1 polem w klauzuli SELECT zostanie zwrócona automatycznie, nawet jeśli pole resource_name nie zostało wyraźnie 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, wybranie pól z jednego z tych zasobów spowoduje dalsze podzielenie zapytania według zwróconej nazwy zasobu resource_name Segmenting Resource. Na przykład zobaczysz, że zasób campaign jest wyświetlany 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 spowoduje też zwrócenie pola campaign.resource_name i podzielenie go na segmenty.

Możliwość wyboru segmentów i danych

Niektóre pola segmentu mogą być niezgodne z niektórymi innymi polami segmentów lub z niektórymi polami danych. Aby określić, które pola segmentów są ze sobą zgodne, przejrzyj listę selectable_with segmentów w klauzuli SELECT.

W przypadku zasobu ad_group dostępnych jest ponad 50 dostępnych segmentów. Lista selectable_with dla segments.hotel_check_in_date jest jednak znacznie mniejsza grupa 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 skrzyżowaniu tych dwóch list.

Podczas dodawania niektórych segmentów dane w wierszu podsumowania mogą się zmniejszyć
Gdy użytkownik segments.keyword.info.match_type zostanie dodany do zapytania z atrybutem FROM ad_group_ad, segment ten będzie przekazywać do wierszy tylko wiersze danych ze słowami kluczowymi i usuwać wszystkie wiersze niepowiązane ze słowem kluczowym. W takim przypadku dane byłyby niższe, ponieważ wykluczałyby dane inne niż słowa kluczowe.

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 dat określane jako podstawowe segmenty dat:

  • segments.date
  • segments.week
  • segments.month
  • segments.quarter
  • segments.year

Reguły 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 bez wyświetlania w klauzuli SELECT.

  • Jeśli któryś z tych segmentów jest w klauzuli SELECT, skończony zakres dat składający się z podstawowych segmentów dat musi być określony w klauzuli WHERE (segmenty dat nie muszą być takie same jak podane w sekcji SELECT).

Przykłady

Nieprawidłowy: ponieważ segments.date jest w klauzuli SELECT, musisz określić skończony 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 zebrane w zakresie dat. Pamiętaj, że właściwość segments.date nie musi być podana 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 we wszystkich dniach 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 potem według miesiąca, dla wszystkich miesięcy w zakresie.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

Wyszukiwane hasło

W przypadku zasobu search_term_view jest ona domyślnie podzielona na segmenty według grupy reklam, a nie tylko wyszukiwanego hasła, co odzwierciedla struktura nazwy zasobu, która zawiera też grupę reklam. W efekcie w wynikach wyszukiwania pojawią się pozornie zduplikowane wiersze, ale w rzeczywistości te same wiersze 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ż 2 zwrócone obiekty w tym przykładzie wydają się duplikatami, ich nazwy zasobów są różne, szczególnie w „&grupie reklam”. Oznacza to, że wyszukiwane hasło &Zdjęcia Google&ma być przypisane do 2 grup reklam (identyfikatory: 2222222222 i 33333333333) w tym samym dniu (2015-06-15). Dlatego możemy przyjąć, że interfejs API działał zgodnie z oczekiwaniami i w tym przypadku nie zwróciły zduplikowanych obiektów.