Podział na segmenty

Segmentację, dostępną w interfejsie Google Ads jako osobne menu, można implementowanych w interfejsie Google Ads API, dodając do zapytania odpowiednie pole. Dla: na przykład dodanie segments.device do otrzymuje raport z po jednym wierszu dla każdej kombinacji urządzenia i określonego zasobu w klauzuli FROM, a element są rozdzielane między nie wartości statystyczne (wyświetlenia, kliknięcia, konwersje itp.).

W interfejsie Google Ads można używać tylko jednego segmentu naraz, API możesz wskazać wiele segmentów w jednym zapytaniu.

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

Wyniki wysłania tego zapytania do GoogleAdsService.SearchStream będzie podobny do tego ciągu JSON:

{
  "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"
      }
    },
    ...
  ]
}

Zwróć uwagę, że w powyższym przykładowym wyniku atrybuty dla pierwszego i drugiego obiekty z nazwą zasobu są takie same. Wyświetlenia są podzielone na segmenty według device, więc dla tej samej kampanii mogą być zwracane co najmniej 2 obiekty.

Podział na segmenty niejawne

Każdy raport jest początkowo dzielony według zasobu określonego w FROM . Pole resource_name zasobu w klauzuli FROM ma postać zwracanych, a dane są według niego segmentowane, nawet jeśli pole resource_name ma wartość niewymienione w zapytaniu. Na przykład, jeśli wpiszesz ad_group jako zasób w klauzuli FROM, a potem ad_group.resource_name będzie zostanie automatycznie zwrócony, a dane będą niejawnie posegmentować w nim ad_group.

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 określono ad_group jako zasób.

Pola segmentów do wyboru

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

Segmentowanie zasobów

Podczas wybierania zasobów może być dostępna opcja złączenia niejawnie na powiązanych zasobach, wybierając pola obok pól w klauzuli FROM. Powiązane zasoby znajdziesz w Lista Attributed Resources zasobu w metadanych klauzuli FROM stronę. W przypadku zasobu ad_group zobaczysz możesz też wybrać pola z menu campaign . Pole resource_name w dowolnym elemencie Attributed Resources o wartości 1 pole w klauzuli SELECT zostanie automatycznie zwrócone, nawet jeśli pole resource_name nie jest wyraźnie uwzględnione w zapytaniu.

Podobnie jak w przypadku wybierania pól Attributed Resource, możesz też wybrać opcję Segmenting Resource pól. Jeśli dany zasób ma atrybut Segmenting Resources na stronie metadanych, a następnie wybierając pola z jednego z tych zasobów spowoduje podzielenie zapytania na segmenty według zwróconej wartości resource_name Segmenting Resource Przekonasz się na przykład, że campaign zasób jest wymieniony jako Segmenting Resource dla zasobu campaign_budget. Zaznaczam dowolną z tych opcji z pola kampanii, np. campaign.name, z zasób campaign_budget spowoduje, że pole campaign.name będzie nie tylko zwraca, ale sprawi, że funkcja campaign.resource_name pole do i podzielonych na segmenty.

Możliwość wyboru segmentów i danych

Dane pole segmentu może nie być zgodne z innym segmentem. lub z niektórymi polami danych. Aby wskazać, które pola segmentu są zgodne ze sobą, możesz sprawdzić listę selectable_with segmentów w klauzuli SELECT.

W przypadku pliku ad_group, dostępnych jest ponad 50 segmentów, które który możesz wybrać. Jednak lista selectable_with dla segments.hotel_check_in_date. to znacznie mniejszy zestaw zgodnych segmentów. Oznacza to, że jeśli dodasz parametr segments.hotel_check_in_date w klauzuli SELECT, ograniczysz dostępnych fragmentów, które pozostały do wyboru list.

Gdy dodasz niektóre segmenty, dane w wierszu podsumowania mogą się zmniejszyć
Gdy do zapytania zostanie dodane pole segments.keyword.info.match_type z parametrem FROM ad_group_ad, ten segment informuje zapytanie, aby pobierało ono tylko wiersze zawierające słowa kluczowe oraz usuń wszystkie wiersze, które nie są powiązane z słowa kluczowego. W tym przypadku dane będą niższe, ponieważ wykluczają one danych niedotyczących słów kluczowych.

Reguły dla segmentów w klauzuli WHERE

Gdy segment jest w klauzuli WHERE, musi też znajdować się w SELECT . Wyjątkiem od tej reguły są następujące segmenty dat, które są nazywanych podstawowymi segmentami dat:

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

Reguły dla pól głównego segmentu dat

Segmenty segments.date, segments.week, segments.month, segments.quarter i segments.year działają tak:

  • Te segmenty można filtrować w klauzuli WHERE, ale nie pojawiają się one w klauzuli SELECT.

  • Jeśli którykolwiek z tych segmentów znajduje się w klauzuli SELECT, ograniczony zakres dat złożone z podstawowych segmentów dat należy określić w klauzuli WHERE (segmenty dat nie muszą być takie same jak segmenty określone w SELECT).

Przykłady

Błąd: ponieważ segments.date to w klauzuli SELECT musisz określić ograniczony zakres dat w klauzulę 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ęć uzyskanych w danym 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ęć posegmentowanych 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ęć podzielonych według miesiąca we wszystkich dniach 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ęć podzielonych według kwartału, a następnie według miesiąca we wszystkich miesiącach w zakresie roku.
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 w przypadku parametru search_term_view, oraz są niejawnie posegmentowane według grupy reklam, a nie tylko wyszukiwanego hasła, co odzwierciedla struktura jego zasobów name, która obejmuje też grupę reklam. W rezultacie otrzymasz pozornie duplikat wiersze z tymi samymi wyszukiwanymi hasłami pojawiają się w wynikach, podczas gdy w rzeczywistości wiersze należałyby 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, których nazwy zasobów są różne, szczególnie w grupie reklam, Oznacza to, że wyszukiwanie „zdjęcia Google” jest przypisany dwóm grupy reklam (identyfikatory: 2222222222 i 33333333333) w tym samym dniu (15.06.2015 r.). Możemy więc stwierdzić, że interfejs API działał zgodnie z oczekiwaniami i nie zwrócił w tym przypadku.