Struktura zapytania

Zapytania dotyczące pól zasobów, segmentów i danych można wysyłać do metod GoogleAdsService Search lub SearchStream. Aby utworzyć zapytanie w języku zapytań Google Ads, musisz je zbudować, korzystając z gramatyki języka. Zapytanie składa się z kilku klauzul:

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT
  • PARAMETERS

Aby ułatwić Ci wybór odpowiednich danych, klauzule używają nazwy pól, nazwy zasobów, operatorów, warunkówkolejności. Po połączeniu tych danych w jedną prośbę można wysłać ją za pomocą interfejsu Google Ads API.

Klauzule

Film: zgodność pól GAQL

WYBIERZ

Klauzula SELECT określa zestaw pól do pobrania w żądaniu. SELECT przyjmuje listę pól zasobów, pól segmentów i danych oddzielonych przecinkami, a w odpowiedzi zwraca wartości. Klauzula SELECT jest wymagana w zapytaniu.

Przykładowe zapytanie poniżej pokazuje wybór atrybutów danego zasobu:

SELECT
  campaign.id,
  campaign.name
FROM campaign

W jednym żądaniu możesz poprosić o różne typy pól, np.:

SELECT
  campaign.id,
  campaign.name,
  bidding_strategy.id,
  bidding_strategy.name,
  segments.device,
  segments.date,
  metrics.impressions,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  • Pola zasobów

    • campaign.id
    • campaign.name
  • Pola zasobów

    • bidding_strategy.id
    • bidding_strategy.name
  • Pola segmentu

    • segments.device
    • segments.date
  • Dane

    • metrics.impressions
    • metrics.clicks

Niektóre pola mogą nie być dozwolone w klauzuli SELECT ze względu na te ograniczenia:

  • Zapytania dotyczące pól, które nie są możliwe do wybrania. Atrybuty metadanych tych pól (Selectable) będą oznaczone jako false.
  • Wybieranie atrybutów pól powtarzanych. Atrybuty metadanych tych pól (isRepeated) będą oznaczone jako true.
  • Wybieranie pól, które nie są dostępne dla danego zasobu w klauzuli FROM. Atrybutów niektórych zasobów nie można wybierać razem, a dla zasobu w klauzuli FROM będzie dostępny tylko podzbiór wszystkich danych i segmentów.
  • Wybieranie segmentów lub danych, które są ze sobą niezgodne. Więcej informacji na ten temat znajdziesz w sekcji dotyczącej podziału na segmenty.

Informacje związane z powyższymi warunkami znajdziesz w naszych dokumentach referencyjnych lub w GoogleAdsFieldService.

FROM

Klauzula FROM określa główny zasób, który zostanie zwrócony. Zasoby w klauzuli FROM określają, których pól można używać we wszystkich pozostałych klauzulach danego zapytania. W klauzuli FROM można podać tylko jeden zasób. Klauzula FROM jest wymagana w zapytaniu do metod GoogleAdsService Search lub SearchStream, ale nie należy jej określać podczas korzystania z metody GoogleAdsFieldService.

W przypadku danego zapytania w klauzuli FROM może występować tylko 1 zasób, ale mogą być też dostępne pola z zasobami przypisanymi. Te zasoby są dołączane do zasobu w nawiasach klamrowych FROM, więc aby zwrócić ich wartości, wystarczy dodać ich atrybuty do nawiasu klamrowego SELECT. Nie wszystkie zasoby mają atrybuty. W tym przykładzie możesz poprosić o identyfikator grupy reklam i identyfikator kampanii z grup reklam:

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

Zawsze zwracane jest pole resource_name zasobu głównego. W tym przykładzie parametr ad_group.resource_name zostanie uwzględniony w odpowiedzi, mimo że nie został wybrany w zapytaniu:

SELECT ad_group.id
FROM ad_group

To samo dotyczy innych zasobów, gdy wybrane jest co najmniej 1 pole. Na przykład: campaign.resource_name zostanie uwzględnione w odpowiedzi na to zapytanie:

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

WHERE

Klauzula WHERE określa warunki stosowane podczas filtrowania danych w ramach żądania. Jeśli używasz klauzuli WHERE, możesz określić co najmniej 1 warunek, rozdzielając go znakiem AND. Każdy warunek powinien być zgodny ze wzorcem field_name Operator value. Klauzula WHERE jest opcjonalna w zapytaniu.

Oto przykład użycia zapytania WHERE do zwrócenia danych z określonego przedziału czasu:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

Aby filtrować dane, możesz łączyć ze sobą wiele warunków. W tym przykładzie żądamy liczby kliknięć we wszystkich kampaniach z wyświetleniami na urządzeniach mobilnych w ciągu ostatnich 30 dni.

SELECT
  campaign.id,
  campaign.name,
  segments.device,
  metrics.clicks
FROM campaign
WHERE metrics.impressions > 0
  AND segments.device = MOBILE
  AND segments.date DURING LAST_30_DAYS

Segmenty w klauzuli WHERE muszą znajdować się w klauzuli SELECT, z wyjątkiem tych segmentów dat, które są nazywane podstawowymi segmentami dat:

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

W tym zapytaniu wybrana jest opcja segments.date. Ponieważ jest to podstawowy segment dat, wymaga on zdefiniowania ograniczonego zakresu dat składającego się z podstawowych segmentów dat w klauzuli WHERE.

SELECT
  campaign.id,
  campaign.name,
  segments.date,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

Wszystkie segmenty, które spełniają powyższy warunek, to: segments.date, segments.week, segments.month, segments.quarter i segments.year. Jeśli wybierzesz któryś z tych segmentów, musisz użyć co najmniej jednego z nich w klauzuli WHERE.

Podczas filtrowania należy pamiętać o tym, że wielkość liter w operatorze ma znaczenie. Więcej informacji znajdziesz w sekcji Znaczenie wielkości liter.

Pełną listę operatorów znajdziesz w gramatyce języka.

ORDER BY

Klauzula ORDER BY określa kolejność zwracania wyników. Dzięki temu możesz uporządkować dane w porządku rosnącym lub malejącym na podstawie nazwy pola. Każde uporządkowanie jest określone jako field_name, po którym następuje ASC lub DESC. Jeśli nie określono ani właściwości ASC, ani DESC, zamówienie przyjmie domyślnie wartość ASC. Klauzula ORDER BY jest opcjonalna w zapytaniu.

Zapytanie to sortuje zwrócone kampanie według liczby kliknięć od największej do najmniejszej:

SELECT
  campaign.name,
  metrics.clicks
FROM campaign
ORDER BY metrics.clicks DESC

W klauzuli ORDER BY możesz podać wiele pól, korzystając z listy rozdzielonej przecinkami. Sortowanie nastąpi w tej samej kolejności, jaką określono w zapytaniu. Na przykład w tym zapytaniu, które wybiera dane o grupach reklam, wyniki zostaną posortowane w kolejności rosnącej według nazwy kampanii, a potem w kolejności malejącej według liczby wyświetleń i w kolejności malejącej według liczby kliknięć:

SELECT
  campaign.name,
  ad_group.name,
  metrics.impressions,
  metrics.clicks
FROM ad_group
ORDER BY
  campaign.name,
  metrics.impressions DESC,
  metrics.clicks DESC

LIMIT

Klauzula LIMIT umożliwia określenie liczby wyników do zwrócenia. Jest to przydatne, jeśli interesuje Cię tylko podsumowanie.

Na przykład za pomocą parametru LIMIT możesz ograniczyć łączną liczbę wyników w ramach tego zapytania:

SELECT
  campaign.name,
  ad_group.name,
  segments.device,
  metrics.impressions
FROM ad_group
ORDER BY metrics.impressions DESC
LIMIT 50

PARAMETRY

Klauzula PARAMETERS umożliwia określenie metaparametrów żądania. Te parametry mogą wpływać na rodzaje zwracanych wierszy.

Obecnie obsługiwane są te metaparametry:

include_drafts

Aby umożliwić zwracanie wersji roboczych, ustaw wartość parametru include_drafts na true. Domyślna wartość to false.

Na przykład to zapytanie zwraca zarówno kampanie robocze, jak i zwykłe:

SELECT campaign.name
FROM campaign
PARAMETERS include_drafts=true

omit_unselected_resource_names

Ustaw wartość parametru omit_unselected_resource_names na true, aby zapobiec zwracaniu nazwy zasobu każdego typu zasobu w odpowiedzi, chyba że zostanie to wyraźnie żądane w klauzuli SELECT. Domyślna wartość to false.

omit_unselected_resource_names przykłady
SELECT
  campaign.name,
  customer.id
FROM campaign
Returned resources:
campaign.resource_name
customer.resource_name

omit_unselected_resource_names ma domyślną wartość false, więc zwracane są wszystkie pola resource_name.
SELECT
  campaign.name,
  customer.id
FROM campaign
PARAMETERS omit_unselected_resource_names = true
Returned resources:
Brak
omit_unselected_resource_names jest określony jako truecampaign.resource_namecustomer.resource_name nie są częścią klauzuli SELECT.
SELECT
  campaign.name,
  campaign.resource_name
FROM campaign
PARAMETERS omit_unselected_resource_names = true
Returned resource:
campaign.resource_name
omit_unselected_resource_names jest określony jako true, a campaign.resource_name jest wymagany w ramach klauzuli SELECT.

Dodatkowe zasady językowe

Oprócz przykładów dotyczących poszczególnych klauzul język zapytań Google Ads umożliwia też stosowanie tych zachowań:

  • W zapytaniu nie musi występować w klauzuli SELECT pole głównego zasobu. Możesz np. filtrować dane, korzystając tylko z jednego lub większej liczby pól zasobu głównego:

    SELECT campaign.id
    FROM ad_group
    WHERE ad_group.status = PAUSED
    
  • Dane można wybierać tylko w przypadku danego zasobu. W zapytaniu nie trzeba podawać żadnych innych pól tego zasobu:

    SELECT
      metrics.impressions,
      metrics.clicks,
      metrics.cost_micros
    FROM campaign
    
  • Pola segmentacji można wybierać bez towarzyszących pól zasobów ani danych:

    SELECT segments.device FROM campaign
    
  • Pola resource_name (na przykład campaign.resource_name) można używać do filtrowania i sortowania danych:

    SELECT
      campaign.id,
      campaign.name
    FROM campaign
    WHERE campaign.resource_name = 'customers/1234567/campaigns/987654'