Podział na segmenty

Segmentacja jest dostępna w interfejsie Google Ads jako osobne menu. Segmentację możesz zaimplementować w interfejsie Google Ads API, dodając odpowiednie pole do zapytania. Załóżmy na przykład, że do zapytania dodajesz parametr segments.device. W wyniku powstaje raport z wierszami dla każdej kombinacji urządzenia i zasobu określonego w klauzuli FROM oraz z wartościami statystycznymi (wyświetlenia, kliknięcia, konwersje itp.) podzielonymi między te wiersze.

W interfejsie Google Ads można używać tylko 1 segmentu naraz, ale w interfejsie API możesz określać w tym samym zapytaniu wiele segmentów.

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

Wyniki przesłania tego zapytania do GoogleAdsService.SearchStream będą wyglądać 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 tym przykładowym wyniku atrybuty pierwszego i drugiego obiektu, w tym nazwa zasobu, są takie same. Wyświetlenia są dzielone według urządzenia, dlatego w przypadku tej samej kampanii mogą zostać zwrócone co najmniej 2 obiekty.

Podział na segmenty w sposób domyślny

Każdy raport jest początkowo dzielony na segmenty według zasobu określonego w klauzuli FROM. W klauzuli FROM zwracane jest pole resource_name zasobu, a dane są dzielone na segmenty na jego podstawie, nawet jeśli pole resource_name nie jest wyraźnie uwzględnione w zapytaniu. Jeśli np. w klauzuli FROM jako zasób podasz parametr ad_group, automatycznie zwrócony zostanie parametr ad_group.resource_name, a dane zostaną przypisane do niego w ramach segmentu ad_group.

W przypadku tego zapytania

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"
      }
    }
  ]
}

Pole resource_name obiektu adGroup jest zawsze zwracane, ponieważ ad_group jest określone jako zasób w klauzuli FROM.

Pola segmentów do wyboru

Nie wszystkie pola segmentu są dostępne w przypadku danego zasobu w klauzuli FROM. Załóżmy na przykład, że nadal wysyłasz zapytanie z zasobu ad_group. Aby pole segmentu było dostępne do wybrania z zasosobu ad_group, musi ono występować na liście Segments w przypadku pola ad_group. Lista Segments to żółta część tabeli dostępnych pól na stronie metadanych zasobu ad_group.

Zasoby segmentu

Podczas wybierania niektórych zasobów możesz mieć opcję dołączenia do nich zasobów powiązanych, wybierając ich pola obok pól zasobu w klauzuli FROM. Te powiązane zasoby znajdziesz na liście Attributed Resources zasobu na stronie metadanych klauzuli FROM. W przypadku zasobu ad_group możesz też wybierać pola z zasosobu campaign. Pole resource_name dowolnego obiektu Attributed Resources, który zawiera co najmniej 1 pole w nawiasach klamrowych SELECT, zostanie zwrócone automatycznie, nawet jeśli pole resource_name nie jest w żaden sposób uwzględnione w zapytaniu.

Podobnie jak w przypadku pól Attributed Resource możesz też wybierać pola Segmenting Resource. Jeśli dana usługa ma listę Segmenting Resources na stronie metadanych, a Ty wybierzesz pola z jednego z tych wymienionych zasobów, zapytanie zostanie podzielone na kolejne segmenty na podstawie zwróconego pola resource_name tego zasobu.Segmenting Resource Na przykład zasób campaign jest wymieniony jako Segmenting Resource w przypadku zasobu campaign_budget. Wybranie dowolnego pola kampanii, np. campaign.name, z zasosobu campaign_budget powoduje nie tylko zwrócenie pola campaign.name, ale też zwrócenie pola campaign.resource_name i dzielenie danych na podstawie tego ostatniego.

Możliwość wyboru między segmentami a danymi

Podane pole segmentu może być niezgodne z niektórymi innymi polami segmentu lub polami danych. Aby sprawdzić, które pola segmentu są ze sobą zgodne, sprawdź listę selectable_with segmentów w klauzuli SELECT.

W przypadku zasobu ad_group dostępnych jest ponad 50 segmentów, z których możesz wybierać. Lista selectable_with dla 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 do przecięcia tych 2 list.

Gdy dodasz określone segmenty, dane w wierszu podsumowania mogą się zmniejszyć. Gdy do zapytania z użyciem zapytania FROM ad_group_ad dodasz segment segments.keyword.info.match_type, zapytanie to będzie tylko pobierać wiersze danych, które zawierają słowa kluczowe, i usuwać wszystkie wiersze, które nie są powiązane ze słowem kluczowym. W takim przypadku dane będą niższe, ponieważ nie będą uwzględniać danych innych niż dotyczące słów kluczowych.

Reguły dotyczące segmentów w klauzuli WHERE

Jeśli segment występuje w klauzuli WHERE, musi też występować w klauzuli SELECT. Wyjątkiem od tej reguły są następujące segmenty dat, które są nazywane głównymi segmentami dat:

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

Reguły dotyczące pól segmentu danych podstawowych

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 uwzględniając ich w klauzuli SELECT.

  • Jeśli którykolwiek z tych segmentów znajduje się w klauzuli SELECT, w klauzuli WHERE musisz podać ograniczony zakres dat, który składa się z podstawowych segmentów dat. Segmenty dat nie muszą być takie same jak te określone w ustawieniu SELECT.

Przykłady

Nieprawidłowe: ponieważ segments.date znajduje się w klauzuli SELECT, musisz w klauzuli WHERE podać 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 uzyskane w wybranym zakresie dat. Pamiętaj, że w klauzuli SELECT nie musisz uwzględniać wartości segments.date.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według daty we wszystkich dniach z wybranego zakresu dat.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według miesiąca za wszystkie dni w wybranym zakresie dat.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Prawidłowe: to zapytanie zwraca nazwy kampanii i kliknięcia podzielone według kwartału, a potem według miesiąca w przypadku wszystkich miesięcy w danym roku.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2019
  AND segments.year < 2024

search_term_view

Zasób search_term_view jest też niejawnie dzielony według grupy reklam, a nie tylko według hasła, co widać po strukturze nazwy zasobu, która zawiera też grupę reklam. Dlatego w wynikach mogą się pojawić pozornie zduplikowane wiersze z tymi samymi hasłami wyszukiwania, ale należące do innej grupy reklam.

{
  "results":[
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"3"
      },
      "segments":{
        "date":"2024-06-15"
      }
    },
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"2"
      },
      "segments":{
        "date":"2024-06-15"
      }
    }
  ]
}

Chociaż 2 zwrócone w tym przykładzie obiekty wyglądają na duplikaty, ich nazwy zasobów są w rzeczywistości różne, zwłaszcza w części „ad group” (grupa reklam). Oznacza to, że w tej samej dacie (15.06.2024) wyszukiwane hasło „zdjęcia google” jest przypisywane do 2 grup reklam (z identyfikatorami 222222222233333333333). Możemy więc stwierdzić, że interfejs API działał zgodnie z oczekiwaniami i w tym przypadku nie zwrócił żadnych duplikatów obiektów.