Segmentasyon

Google Ads kullanıcı arayüzünde ayrı bir menü olarak bulunan segmentasyon, Google Ads API'de sorguya yalnızca uygun alan eklenerek uygulanabilir. Örneğin, bir sorguya segments.device eklendiğinde, her cihaz ve FROM ifadesinde belirtilen kaynak kombinasyonu için bir satır içeren bir rapor elde edilir ve istatistiksel değerler (gösterim, tıklama, dönüşüm vb.) bunlar arasında bölünür.

Google Ads kullanıcı arayüzünde aynı anda yalnızca bir segment kullanılabilir. API ile aynı sorguda birden çok segment belirtebilirsiniz.

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

Bu sorgunun GoogleAdsService.SearchStream adresine gönderilmesinden elde edilen sonuçlar şu JSON dizesine benzer:

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

Yukarıdaki örnek sonuçta, kaynak adını içeren birinci ve ikinci nesne özelliklerinin aynı olduğunu unutmayın. Gösterimler cihaza göre segmentlere ayrıldığından aynı kampanya için iki veya daha fazla nesne döndürülebilir.

Dolaylı segmentasyon

Her rapor başlangıçta FROM yan tümcesinde belirtilen kaynağa göre segmentlere ayrılır. FROM yan tümcesindeki kaynağın resource_name alanı döndürülür ve resource_name alanı sorguya açıkça dahil edilmemiş olsa bile metrikler bu alana göre segmentlere ayrılır. Örneğin, FROM yan tümcesinde kaynak olarak ad_group değerini belirttiğinizde ad_group.resource_name otomatik olarak döndürülür ve metrikler, ad_group düzeyinde dolaylı olarak segmentlere ayrılır.

Yani bu sorgu için

SELECT metrics.impressions
FROM ad_group

şuna benzer bir JSON dizesi elde edersiniz:

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

FROM yan tümcesinde ad_group kaynak olarak belirtildiği için adGroup öğesinin resource_name alanının her zaman döndürüldüğünü unutmayın.

Seçilebilir segment alanları

FROM yan tümcesindeki belirli bir kaynak için tüm segment alanları seçilemez. Örnek olarak ad_group kaynağından sorgulamaya devam edeceğiz. Bir segment alanının ad_group kaynağından seçilebilmesi için bu alanın, ad_group için Segments listesinde bulunması gerekir. Segments listesi, ad_group kaynağının meta veri sayfasındaki kullanılabilir alanlar tablosunun sarı kısmıdır.

Kaynakları segmentlere ayırın

Bazı kaynaklar arasından seçim yaparken FROM ifadesindeki kaynak alanlarıyla birlikte ilgili kaynakları seçerek ilgili kaynaklara dolaylı olarak katılma seçeneğiniz olabilir. Bu ilgili kaynaklar, FROM ibaresinin meta veri sayfasındaki kaynaktaki Attributed Resources listesinde bulunabilir. ad_group kaynağı söz konusu olduğunda, campaign kaynağından alanlar da seçebileceğinizi görürsünüz. SELECT yan tümcesinde en az 1 alan bulunan herhangi bir Attributed Resources kaynağının resource_name alanı, "resource_name" alanı sorguya açıkça dahil edilmemiş olsa bile otomatik olarak döndürülür.

Attributed Resource alanlarını seçmeye benzer şekilde Segmenting Resource alanlarını da seçebilirsiniz. Belirli bir kaynağın meta veri sayfasında Segmenting Resources listesi varsa listelenen bu kaynakların birindeki alanların seçilmesi, sorgunun o Segmenting Resource kaynağının döndürülen resource_name değerine göre daha fazla segmentlere ayrılmasına neden olur. Örneğin, campaign kaynağının campaign_budget kaynağı için Segmenting Resource olarak listelendiğini görürsünüz. campaign_budget kaynağından campaign.name gibi herhangi bir kampanya alanının seçilmesi yalnızca campaign.name alanının döndürülmesine değil, campaign.resource_name alanının döndürülmesine ve segmentlere ayrılmasına neden olur.

Segmentler ve metrikler arasında seçilebilirlik

Belirli bir segment alanı, diğer segment alanlarının bazılarıyla veya metrik alanlarının bazılarıyla uyumlu olmayabilir. Hangi segment alanlarının birbiriyle uyumlu olduğunu belirlemek için SELECT ifadesindeki segmentlerin selectable_with listesini inceleyebilirsiniz.

ad_group kaynağı söz konusu olduğunda, seçebileceğiniz 50'den fazla kullanılabilir segment vardır. Ancak segments.hotel_check_in_date için selectable_with listesi, çok daha az sayıda uyumlu segmentten oluşur. Diğer bir deyişle, SELECT yan tümcesine segments.hotel_check_in_date alanını eklerseniz seçmek için kalan kullanılabilir segmentleri bu iki listenin kesişimiyle sınırlandırmış olursunuz.

Bazı segmentler eklerken özet satırındaki metrikler azalabilir
FROM ad_group_ad içeren bir sorguya segments.keyword.info.match_type eklendiğinde bu segment, sorguya yalnızca anahtar kelime içeren veri satırlarını getirmesini ve bir anahtar kelimeyle ilişkili olmayan tüm satırları kaldırmasını söyler. Bu durumda, anahtar kelime olmayan tüm metrikleri hariç tutacağı için metrikler daha düşük olur.

WHERE yan tümcesindeki segmentler için kurallar

WHERE yan tümcesinde bir segment varsa SELECT tümcesinde de bulunmalıdır. Bu kuralın istisnası, temel tarih segmentleri olarak adlandırılan aşağıdaki tarih segmentleridir:

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

Temel tarih segmenti alanlarıyla ilgili kurallar

segments.date, segments.week, segments.month, segments.quarter ve segments.year segmentleri şu şekilde çalışır:

  • Bu segmentler, SELECT ifadesinde görünmeden WHERE ifadesinde filtrelenebilir.

  • Bu segmentlerden herhangi biri SELECT ifadesinde yer alıyorsa WHERE yan tümcesinde temel tarih segmentlerinden oluşan sınırlı bir tarih aralığı belirtilmelidir (tarih segmentlerinin SELECT öğesinde belirtilenlerle aynı olması gerekmez).

Örnekler

Geçersiz: segments.date, SELECT yan tümcesinde bulunduğundan segments.date, segments.week, segments.month, segments.quarter veya segments.year için WHERE yan tümcesinde sonlu bir tarih aralığı belirtmeniz gerekir.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Geçerli: Bu sorgu, tarih aralığı boyunca tahakkuk eden kampanya adlarını ve tıklamaları döndürür. SELECT ifadesinde segments.date öğesinin görünmesi gerekmediğini unutmayın.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Geçerli: Bu sorgu, tarih aralığındaki tüm günler için kampanya adlarını ve tıklamaları tarihe göre segmentlere ayrılmış şekilde döndürür.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Geçerli: Bu sorgu, tarih aralığındaki tüm günler için aya göre segmentlere ayrılmış kampanya adlarını ve tıklamaları döndürür.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Geçerli: Bu sorgu, kampanya adlarını ve tıklamaları çeyreğe ve ardından yıl aralığındaki tüm aylar için aya göre segmentlere ayrılmış şekilde döndürür.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

search_term_view kaynağı için söz konusu kaynağın yalnızca bir arama terimine göre değil, dolaylı olarak reklam grubuna göre segmentlere ayrıldığını da unutmayın. Bu durum, reklam grubunu da içeren kaynak adının yapısında gösterilir. Bu nedenle, gerçekte satırlar farklı bir reklam grubuna ait olduğunda, sonuçlarınızda aynı arama terimlerine sahip bazı yinelenen satırlar görürsünüz:

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

Bu örnekte döndürülen iki nesne kopya gibi görünse de, özellikle "reklam grubu" bölümündeki kaynak adları farklıdır. Diğer bir deyişle, "google fotoğrafları" arama terimi aynı tarihte (15.06.2015) iki reklam grubuyla (kimlik: 2222222222 ve 33333333333) ilişkilendirilir. Bu nedenle, bu durumda API'nin amaçlandığı gibi çalıştığı ve yinelenen nesneler döndürmediği sonucuna varabiliriz.