Segmentasi

Segmentasi, yang tersedia di UI Google Ads sebagai menu terpisah, dapat diterapkan di Google Ads API hanya dengan menambahkan kolom yang sesuai ke kueri. Misalnya, menambahkan segments.device ke kueri, akan menghasilkan laporan dengan baris untuk setiap kombinasi perangkat dan resource yang ditentukan dalam klausa FROM, dan nilai statistik (tayangan, klik, konversi, dll.) yang terpisah di antara keduanya.

Meskipun di UI Google Ads, hanya satu segmen dalam satu waktu yang dapat digunakan, dengan API, Anda dapat menentukan beberapa segmen dalam kueri yang sama.

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

Hasil dari pengiriman kueri ini ke GoogleAdsService.SearchStream akan terlihat seperti string JSON ini:

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

Perhatikan bahwa dalam hasil contoh di atas, atribut untuk objek pertama dan kedua, termasuk nama resource-nya, adalah sama. Tayangan disegmentasikan berdasarkan perangkat, sehingga dua objek atau lebih dapat ditampilkan untuk kampanye yang sama.

Segmentasi implisit

Setiap laporan pada awalnya disegmentasikan berdasarkan resource yang ditentukan dalam klausa FROM. Kolom resource_name resource di klausa FROM ditampilkan dan metrik disegmentasikan menurutnya, meskipun kolom resource_name tidak disertakan secara eksplisit dalam kueri. Misalnya, jika Anda menentukan ad_group sebagai resource dalam klausa FROM, ad_group.resource_name akan otomatis ditampilkan dan metrik secara implisit akan tersegmentasi terhadapnya di tingkat ad_group.

Jadi untuk kueri ini,

SELECT metrics.impressions
FROM ad_group

Anda akan mendapatkan string JSON seperti ini:

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

Perhatikan bahwa kolom resource_name dari adGroup selalu ditampilkan karena ad_group ditentukan sebagai resource dalam klausa FROM.

Kolom segmen yang dapat dipilih

Tidak semua kolom segmen dapat dipilih untuk resource tertentu dalam klausa FROM. Sebagai contoh, kita akan terus mengkueri dari resource ad_group. Agar kolom segmen dapat dipilih dari resource ad_group, kolom tersebut harus ada dalam daftar Segments untuk ad_group. Daftar Segments adalah bagian berwarna kuning dari tabel kolom yang tersedia di halaman metadata resource ad_group.

Resource segmen

Saat memilih dari beberapa resource, Anda mungkin memiliki opsi untuk secara implisit bergabung pada resource terkait dengan memilih kolomnya bersama kolom resource dalam klausa FROM. Resource terkait ini dapat ditemukan dalam daftar Attributed Resources resource di halaman metadata klausa FROM. Dalam kasus resource ad_group, Anda akan melihat bahwa Anda juga dapat memilih kolom dari resource campaign. Kolom resource_name dari Attributed Resources apa pun yang memiliki setidaknya 1 kolom dalam klausa SELECT akan otomatis ditampilkan, meskipun kolom resource_name tidak disertakan secara eksplisit dalam kueri.

Mirip dengan memilih kolom Attributed Resource, Anda juga dapat memilih kolom Segmenting Resource. Jika resource tertentu memiliki daftar Segmenting Resources di halaman metadatanya, memilih kolom dari salah satu resource yang tercantum tersebut akan menyebabkan kueri disegmentasikan lebih lanjut oleh resource_name yang ditampilkan dari Segmenting Resource tersebut. Misalnya, resource campaign tercantum sebagai Segmenting Resource untuk resource campaign_budget. Memilih kolom kampanye, seperti campaign.name, dari resource campaign_budget tidak hanya menyebabkan kolom campaign.name ditampilkan, tetapi juga akan menyebabkan kolom campaign.resource_name ditampilkan dan disegmentasikan.

Pemilihan antara segmen dan metrik

Kolom segmen tertentu mungkin tidak kompatibel dengan sebagian kolom segmen lainnya, atau dengan beberapa kolom metrik. Untuk mengidentifikasi kolom segmen mana yang kompatibel satu sama lain, Anda dapat meninjau daftar selectable_with segmen dalam klausa SELECT.

Dalam kasus resource ad_group, ada lebih dari 50 segmen yang tersedia yang dapat Anda pilih. Namun, daftar selectable_with untuk segments.hotel_check_in_date adalah kumpulan segmen kompatibel yang jauh lebih kecil. Artinya, jika Anda menambahkan kolom segments.hotel_check_in_date ke dalam klausa SELECT, Anda akan membatasi segmen yang tersedia yang tersisa untuk dipilih ke persimpangan kedua daftar ini.

Saat menambahkan beberapa segmen, metrik di baris ringkasan dapat menurun
Saat segments.keyword.info.match_type ditambahkan ke kueri dengan FROM ad_group_ad, segmen tersebut akan memberi tahu kueri untuk hanya mendapatkan baris data yang memiliki kata kunci, dan menghapus baris yang tidak terkait dengan kata kunci. Dalam kasus ini, metrik akan lebih rendah karena akan mengecualikan metrik non-kata kunci.

Aturan untuk segmen dalam klausa WHERE

Jika sebuah segmen berada dalam klausa WHERE, segmen tersebut juga harus ada dalam klausa SELECT. Pengecualian untuk aturan ini adalah segmen tanggal berikut, yang disebut sebagai segmen tanggal inti:

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

Aturan untuk kolom segmen tanggal inti

Segmen segments.date, segments.week, segments.month, segments.quarter, dan segments.year berfungsi sebagai berikut:

  • Segmen ini dapat difilter dalam klausa WHERE tanpa muncul dalam klausa SELECT.

  • Jika salah satu segmen ini berada dalam klausa SELECT, rentang tanggal terbatas yang terdiri dari segmen tanggal inti harus ditentukan dalam klausa WHERE (segmen tanggal tidak harus sama dengan yang ditentukan dalam SELECT).

Contoh

Tidak valid: Karena segments.date berada dalam klausa SELECT, Anda harus menentukan rentang tanggal terbatas dalam klausa WHERE untuk segments.date, segments.week, segments.month, segments.quarter, atau segments.year.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Valid: Kueri ini menampilkan nama kampanye dan klik yang diperoleh selama rentang tanggal. Perhatikan bahwa segments.date tidak perlu muncul dalam klausa SELECT.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valid: Kueri ini menampilkan nama kampanye dan klik yang disegmentasikan menurut tanggal untuk semua hari dalam rentang tanggal.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valid: Kueri ini menampilkan nama kampanye dan klik yang disegmentasikan berdasarkan bulan untuk semua hari dalam rentang tanggal.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Valid: Kueri ini menampilkan nama kampanye dan klik yang disegmentasikan berdasarkan kuartal, lalu menurut bulan untuk semua bulan dalam rentang tahun.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

Perhatikan bahwa resource search_term_view juga secara implisit disegmentasikan berdasarkan grup iklan, bukan hanya istilah penelusuran, seperti yang tercermin dalam struktur nama resource, yang juga mencakup grup iklan. Oleh karena itu, Anda akan mendapatkan beberapa baris yang tampak duplikat dengan istilah penelusuran yang sama muncul di hasil, padahal sebenarnya baris tersebut adalah milik grup iklan yang berbeda:

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

Meskipun dua objek yang ditampilkan dalam contoh ini tampaknya merupakan duplikat, nama resource-nya sebenarnya berbeda, terutama di bagian "grup iklan". Artinya, istilah penelusuran "google photos" diatribusikan ke dua grup iklan (ID 2222222222 dan 33333333333) pada tanggal yang sama (15-06-2015). Dengan demikian, kita dapat menyimpulkan bahwa API tersebut berfungsi sebagaimana mestinya dan tidak menampilkan objek duplikat dalam kasus ini.