Bahasa Kueri Google Ads

Terminologi utama

Resource
Entitas di Google Ads, seperti campaign atau ad_group.
Segmen
Dimensi yang digunakan untuk mengelompokkan data, seperti segments.date atau segments.device. Jika segmen disertakan dalam klausa SELECT dengan metrik, metrik akan dibagi menurut segmen.
Metrik
Pengukuran performa, seperti metrics.impressions atau metrics.clicks.
Resource yang Diatribusikan
Resource yang secara implisit digabungkan ke resource utama dalam klausa FROM, sehingga Anda dapat memilih atributnya bersama dengan atribut resource utama.

Membuat kueri untuk informasi resource atau metadata

Google Ads Query Language dapat membuat kueri Google Ads API untuk jenis informasi berikut:

  • Resource dan atribut, segmen, serta metrik terkaitnya menggunakan GoogleAdsService Search atau SearchStream: Hasil dari kueri GoogleAdsService adalah daftar instance GoogleAdsRow, dengan setiap GoogleAdsRow merepresentasikan resource.

    Jika ada atribut atau metrik yang diminta, baris juga menyertakan kolom tersebut. Jika ada segmen yang diminta, respons juga akan menampilkan baris tambahan untuk setiap tuple segmen-resource.

  • Metadata tentang kolom dan resource yang tersedia di GoogleAdsFieldService: Layanan ini menyediakan katalog kolom yang dapat dikueri dengan spesifikasi tentang kompatibilitas dan jenisnya.

    Hasil dari kueri GoogleAdsFieldService adalah daftar instance GoogleAdsField, dengan setiap GoogleAdsField berisi detail tentang kolom yang diminta.

Untuk mengetahui detail selengkapnya tentang struktur kueri, lihat Struktur kueri dan Tata bahasa Bahasa Kueri Google Ads.

Kueri untuk atribut resource

Berikut adalah contoh kueri dasar untuk atribut resource kampanye yang mengilustrasikan cara menampilkan ID, nama, dan status kampanye:

SELECT
  campaign.id,
  campaign.name,
  campaign.status
FROM campaign
ORDER BY campaign.id

Kueri ini mengurutkan menurut ID kampanye. Setiap GoogleAdsRow yang dihasilkan mewakili objek campaign yang diisi dengan kolom yang dipilih, termasuk resource_name kampanye.

Untuk mengetahui kolom lain yang tersedia untuk kueri kampanye, lihat dokumentasi referensi Campaign.

Kueri untuk metrik

Selain atribut yang dipilih untuk resource tertentu, Anda juga dapat membuat kueri untuk metrik terkait:

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
ORDER BY campaign.id

Kueri ini memfilter hanya kampanye yang memiliki status PAUSED dan memiliki lebih dari 1.000 tayangan iklan, sekaligus mengurutkan menurut ID kampanye. Setiap GoogleAdsRow yang dihasilkan akan memiliki kolom metrics yang diisi dengan metrik yang dipilih.

Untuk mengetahui daftar metrik yang dapat dikueri, lihat dokumentasi Metrics.

Kueri untuk segmen

Selain atribut yang dipilih untuk resource tertentu, Anda juga dapat membuat kueri untuk segmen terkait:

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions,
  segments.date
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
  AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.id

Mirip dengan membuat kueri untuk metrik, kueri ini memfilter hanya kampanye yang memiliki status PAUSED dan telah memiliki lebih dari 1.000 tayangan iklan. Namun, kueri ini menyegmentasikan data menurut tanggal. Hal ini menghasilkan setiap GoogleAdsRow yang merepresentasikan tuple kampanye dan segmen tanggal. Segmentasi membagi metrik yang dipilih, mengelompokkan menurut setiap segmen dalam klausa SELECT clause.

Untuk mengetahui daftar segmen yang dapat dikueri, lihat dokumentasi Segments.

Dalam kueri untuk resource tertentu, Anda dapat menggabungkan resource terkait lainnya jika tersedia. Resource terkait ini dikenal sebagai "resource yang diatribusikan". Anda dapat menggabungkan resource yang diatribusikan secara implisit dengan memilih atribut dalam kueri Anda.

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  bidding_strategy.name
FROM campaign
ORDER BY campaign.id

Kueri ini tidak hanya memilih atribut kampanye, tetapi juga menarik atribut terkait dari setiap kampanye yang dipilih. Setiap GoogleAdsRow yang dihasilkan mewakili objek campaign yang diisi dengan atribut kampanye yang dipilih, serta atribut strategi bidding yang dipilih bidding_strategy.name.

Untuk mengetahui resource yang diatribusikan yang tersedia untuk kueri kampanye, lihat dokumentasi referensi Campaign.

Praktik terbaik

  • Pilih hanya kolom yang Anda butuhkan untuk menghindari waktu respons yang lama dan waktu tunggu habis.
  • Gunakan LIMIT selama pengembangan dan pengujian untuk menghindari pemrosesan set hasil yang besar.
  • Terapkan filter dalam klausa WHERE untuk meminimalkan transfer data dan ukuran respons.
  • Gunakan GoogleAdsFieldService untuk memeriksa kompatibilitas kolom dan jenis data sebelum membuat kueri yang kompleks.
  • Perhatikan bahwa beberapa kolom, terutama yang melibatkan data dalam jumlah besar atau perhitungan yang rumit, dapat meningkatkan biaya kueri.

Mengubah berdasarkan hasil kueri

Saat membuat kueri untuk resource tertentu, Anda dapat langsung menggunakan hasil yang ditampilkan sebagai objek, mengubahnya, dan mengirimkannya kembali ke metode mutasi di layanan resource tersebut. Berikut adalah contoh alur kerja:

  1. Jalankan kueri untuk semua kampanye PAUSED yang memiliki tayangan iklan lebih dari 1.000.
  2. Dapatkan objek Campaign dari kolom campaign setiap GoogleAdsRow dalam respons.
  3. Ubah status setiap kampanye dari PAUSED menjadi ENABLED.
  4. Panggil CampaignService.MutateCampaigns dengan kampanye yang diubah dan FieldMask yang sesuai untuk memperbaruinya.

Metadata kolom

Kueri yang dikirim ke GoogleAdsFieldService dimaksudkan untuk mengambil metadata kolom. Informasi ini dapat digunakan untuk memahami cara kolom dapat digunakan bersama dalam kueri. Karena data tersedia dari API dan menyediakan metadata yang diperlukan untuk memvalidasi atau membuat kueri, developer dapat melakukannya secara terprogram. Berikut adalah kueri umum untuk metadata:

SELECT
  name,
  category,
  selectable,
  filterable,
  sortable,
  selectable_with,
  data_type,
  is_repeated
WHERE name = "<INSERT_RESOURCE_OR_FIELD>"

Anda dapat mengganti <INSERT_RESOURCE_OR_FIELD> dalam kueri ini dengan resource (seperti customer atau campaign) atau kolom (seperti campaign.id, metrics.impressions, atau ad_group.id).

Untuk mengetahui daftar kolom yang dapat dikueri, lihat dokumentasi GoogleAdsField.

Perbedaan khusus versi

Meskipun sintaksis, klausa, dan operator Bahasa Kueri Google Ads identik di semua versi Google Ads API yang didukung (v23, v24, dan v25), katalog resource, segmen, metrik, dan perilaku pelaporan yang dapat dikueri berbeda menurut versi utama. Kueri GoogleAdsFieldService di endpoint versi API target untuk memeriksa kolom dan aturan kompatibilitas untuk versi tersebut:

  • Referensi sasaran siklus proses: Di v25 dan yang lebih baru, semua sasaran siklus proses (Akuisisi Pelanggan Baru, Retensi Pelanggan, dan Retensi Loyalitas) dikueri dari resource goal dan campaign_goal_config terpadu, menggantikan customer_lifecycle_goal dan campaign_lifecycle_goal (yang digunakan untuk sasaran Akuisisi Pelanggan Baru di v24 dan yang lebih lama, bersama dengan goal dan campaign_goal_config untuk sasaran Retensi Pelanggan).
  • Metrik tampilan aset perluasan URL final: Di v25 dan yang lebih baru, kueri final_url_expansion_asset_view menampilkan semua metrik yang dapat dipilih untuk tampilan. Pada v24 dan versi sebelumnya, respons hanya mencakup metrics.conversions dan metrics.conversions_value untuk kampanye Performa Maksimal dan metrics.impressions untuk kampanye Penelusuran.
  • Pelaporan produk Shopping untuk kampanye Aplikasi: Di v24 dan yang lebih baru, resource shopping_product menampilkan baris produk untuk kampanye Aplikasi selain kampanye Shopping, Performa Maksimal, Peningkat Permintaan, dan Video (di v23, kampanye Aplikasi dikecualikan dari hasil shopping_product).
  • Resource, segmen, dan metrik khusus versi:
    • v25 dan yang lebih baru: Mencakup resource pengukuran peningkatan (seperti lift_measurement_config), segmen seperti segments.ad_sub_format_type dan segments.loyalty_membership, serta metrik engagement YouTube (metrics.youtube_likes, metrics.youtube_comments, dan metrics.youtube_shares). Menghapus local_services_lead.contact_details.email (yang dapat dipilih di v24 dan yang lebih lama).
    • v24 dan yang lebih baru: Mencakup resource cart_data_sales_view, segments.conversion_attribution_event_type di shopping_performance_view, segments.mobile_device_platform, dan segments.ad_network_type di performance_max_placement_view. Menghapus campaign.video_brand_safety_suitability (digantikan oleh customer.video_brand_safety_suitability), segments.ad_sub_network_type di campaign_budget, dan segments.click_type di ad_group_asset, campaign_asset, dan customer_asset (yang hanya dapat dipilih di v23).
  • Kode error perincian tanggal: Kueri yang melakukan segmentasi menurut segments.date, segments.week, atau segments.hour (atau memfilter rentang tanggal di bawah bulanan) di luar periode lihat balik 37 bulan akan menampilkan DateRangeError.REQUESTED_DATE_GRANULARITY_NOT_SUPPORTED di v24 dan yang lebih baru (atau DateRangeError.UNKNOWN di v23). Lihat Rentang tanggal untuk mengetahui detailnya.

Contoh kode

Library klien memiliki contoh penggunaan Bahasa Kueri Google Ads di GoogleAdsService. Folder basic operations memiliki contoh seperti GetCampaigns, GetKeywords, dan SearchForGoogleAdsFields.