Sorgu yapısı ve cümleler

Bir sorgu, çeşitli ifadelerden oluşur: SELECT, FROM, WHERE, ORDER BY, LIMIT ve PARAMETERS.

Yan tümceler, tek bir sorgu isteğinde birleşen alan adları, kaynak adları, operatörler, koşullar ve sıralamalar kullanır.

Temel olarak bir sorgu oluşturmak için:

  • Verilerin alınacağı bir kaynak belirtin.
  • Döndürmek istediğiniz verileri tanımlamak için alanlar ve metrikler ekleyin.
  • Sonuçlarınızı gruplandırmak için segmentler ekleyin.
  • İlişkili kaynak verilerini örtülü olarak birleştirmek için ilişkilendirilmiş kaynaklar ekleyin.
  • Sonuçlarınızı filtreleyin, sıralayın ve sınırlandırın.

SELECT koşulu

SELECT koşulu:

  • Sorguda zorunlu bir ibaredir.
  • İstekle getirilecek alan grubunu belirtir.
  • Virgülle ayrılmış bir kaynak alanı, özel sütun, özel Floodlight değişkeni, segment alanı ve metrik listesini alır ve yanıttaki değerleri döndürür.

Bu örnek sorgu, campaign kaynağının özelliklerini nasıl seçeceğinizi gösterir:

SELECT
  campaign.id,
  campaign.name
FROM campaign

Birden fazla alan türü

Aynı istekte farklı alan türleri isteyebilirsiniz.

Aşağıdaki örnek sorguda, aşağıdakilerin bir kombinasyonunu içeren tek bir sorgu gösterilmektedir:

  • Kaynak alanları: campaign.id, campaign.name, bidding_strategy.id ve bidding_strategy.name.

  • Segment alanları: segments.device ve segments.date.

  • Metrik alanları: metrics.impressions ve metrics.clicks.

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

Arama raporlarınızı segmentlere ayırma hakkında daha fazla bilgi edinmek için Segmentasyon başlıklı makaleyi inceleyin.

Ana kaynak alanı

Genellikle ana kaynak alanınızı SELECT ifadesine dahil edersiniz ancak bu isteğe bağlıdır (gerekli değildir).

Bu örnek sorgu, yalnızca sonuçları filtrelemek için ana kaynak alanı (ad_group.status) kullanır.

SELECT campaign.id
FROM ad_group
WHERE ad_group.status = PAUSED

Özel Floodlight değişkenleri

Kimliklerini kullanarak SELECT ifadesine özel Floodlight değişkenleri ekleyebilirsiniz.

Bu örnekte sorgu, kampanya kaynağı için 123454321 kimlikli bir özel değişken içeriyor.

SELECT
  conversion_custom_metrics.id[123454321]
FROM campaign
SELECT
  conversion_custom_dimensions.id[123454321]
FROM campaign

Özel sütunlar

Kimliklerini kullanarak özel sütunları SELECT yan tümcesine ekleyebilirsiniz.

Bu örnekte sorgu, kampanya kaynağı için 12345678 kimlikli bir özel sütun içeriyor.

SELECT
  custom_columns.id[12345678]
FROM campaign

Özel sütun kimliklerini nasıl alacağınızı öğrenin.

Metrik alanları

Belirli bir kaynağın metrik alanlarını, kaynağın diğer alanlarını SELECT ifadesine dahil etmeden seçebilirsiniz.

Bu örnek sorgu, campaign kaynağı için impressions ve clicks metriklerini seçer.

SELECT
  metrics.impressions,
  metrics.clicks
FROM campaign

Sorgularınızda kullanabileceğiniz metrik alanlarının listesi için metrics bölümüne bakın.

Segment alanları

SELECT ifadesinde eşlik eden kaynak alanlarını veya metrikleri belirtmeden segment alanları seçebilirsiniz.

Bu örnek sorgu, sonuçları cihaza göre segmentlere ayırır.

SELECT segments.device
FROM campaign

Sorgularınızda kullanabileceğiniz segment alanlarının listesi için segments başlıklı makaleyi inceleyin.

Yasaklı alanlar

SELECT ifadesinde aşağıdaki alanları kullanamazsınız:

  • Seçilemeyen alanlar (ör. Selectable meta veri özelliği false olarak işaretlenmiş alanlar).

  • Yinelenen alanlar (yani Repeated meta veri özelliği true olarak işaretlenmiş alanlar).

  • FROM ifadesinde belirtilen kaynak için kullanılamayan alanlar. Bazı kaynakların özellikleri birlikte seçilemez. Bazı kaynaklar, tüm metriklerin ve segmentlerin yalnızca bir alt kümesini kullanıma sunar.

  • Uyumsuz segmentler veya metrikler. Daha fazla bilgi için segmentasyon bölümünü inceleyin.

Her kaynak için bu bilgileri nerede bulacağınızla ilgili ayrıntılar için referans belgelerine bakın.

FROM koşulu

FROM koşulu:

  • SearchAds360Service'e yönelik sorgular için zorunlu bir ifadedir. (Hem Search hem de SearchStream yöntemleri)

  • SearchAds360FieldService sorgularında yer almamalıdır.

  • Sorgunun döndürdüğü ana kaynağı belirtir.

  • Yalnızca tek bir kaynak belirtebilirsiniz.

  • Sorgudaki diğer tüm maddelerde kullanabileceğiniz alanları tanımlar.

İlişkilendirilen kaynaklar

Atfedilen kaynaklar varsa bunlar, FROM ifadesinde belirttiğiniz kaynakla örtülü olarak birleştirilir. Değerlerini döndürmek için yalnızca özelliklerini SELECT ifadesine eklemeniz gerekir.

Bu örnek sorgu, campaign kaynağı ad_group kaynağının ilişkilendirilmiş bir kaynağı olduğundan hem reklam grubu kimliğini hem de kampanya kimliğini döndürür.

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

resource_name alanı

FROM ifadesindeki ana kaynağın resource_name alanı her zaman döndürülür.

Bu örnek sorguda, sorguda açıkça seçilmemiş olmasına rağmen ad_group.resource_name yanıta dahil edilir:

SELECT ad_group.id
FROM ad_group

En az bir alan seçildiğinde bir ilişkilendirilmiş kaynağın resource_name alanı döndürülür.

Bu örnek sorguda, campaign.resource_name yanıtına dahil edilir. Çünkü campaign.id seçilmiştir:

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

WHERE koşulu

WHERE koşulu:

  • Sorguda isteğe bağlı bir ibaredir.
  • İstek için verilerin filtrelenmesi ve segmentlere ayrılmasıyla ilgili koşulları belirtir. Koşullar şu kalıba uyar: FIELD_NAME OPERATOR VALUE (boşluklarla ayrılır).

  • AND ayırıcıyla ayrılmış birden fazla koşul içerebilir.

Bu örnek sorguda, belirli bir dönem için impressions metriklerini döndürmek üzere WHERE ifadesinin nasıl kullanılacağı gösterilmektedir:

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

Arama raporlarınızı segmentlere ayırma hakkında daha fazla bilgi edinmek için Segmentasyon başlıklı makaleyi inceleyin.

Sorgularınızda tarih aralıklarını belirtme hakkında daha fazla bilgi edinmek için Tarih aralıkları bölümüne bakın.

resource_name alanına göre filtrele

Verileri filtrelemek veya sıralamak için resource_name alanını kullanabilirsiniz.

Bu örnek sorgu, sonuçları belirli bir kampanyaya göre filtrelemek için campaign.resource_name alanını kullanır:

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

Birden fazla koşul

Verilerinizi filtrelemek için birden fazla koşulu birleştirebilirsiniz.

Bu örnek sorgu, son 30 gün içinde mobil cihazlarda clicks metrikleri olan tüm kampanyalar için impressions metriklerinin sayısını ister.

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

Raporlarınızı segmentlere ayırma hakkında daha fazla bilgi edinmek için Segmentasyon başlıklı makaleyi inceleyin.

Büyük/küçük harfe duyarlılık

Dize değerlerine göre filtreleme yaparken her operatörün varsayılan büyük/küçük harf duyarlılığı, sonuçlarınızı doğru şekilde filtrelemede önemli bir rol oynar.

Aşağıdaki tabloda her operatörün varsayılan büyük/küçük harf duyarlılığı gösterilmektedir.

Varsayılan büyük/küçük harf duyarlılığı
=/!= Case sensitive
IN/NOT IN Case sensitive
LIKE/NOT LIKE Case insensitive
CONTAINS (...) Case sensitive
REGEXP_MATCH/NOT REGEXP_MATCH Case sensitive

(?i) değiştiricisini kullanarak REGEXP_MATCH ve NOT REGEXP_MATCH için varsayılan hassasiyeti büyük/küçük harfe duyarsız olarak değiştirebilirsiniz. Örneğin:

SELECT campaign.id
FROM campaign
WHERE campaign.name REGEXP_MATCH "(?i).*test.*"

Verilerinizi filtrelemek için kullanabileceğiniz operatörlerin tam listesi için Sorgu dilbilgisi referansı başlıklı makaleyi inceleyin.

Temel veri segmentleri

Aşağıdaki segment alanları temel tarih segmentleri olarak bilinir: segments.date, segments.week, segments.month, segments.quarter ve segments.year.

Bir tarih veya zaman aralığı belirtmek için WHERE koşulunuzda temel tarih segmentlerini kullanabilirsiniz.

Bu örnek sorgu, WHERE ifadesindeki segments.date alanı için DURING LAST_30_DAYS değerini belirtir:

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

Temel tarih segmentlerini kullanma hakkında ayrıntılı bilgi için Segmentasyon > Temel tarih segmentleri bölümüne bakın.

Yasaklanmış filtreleme

Filtrelemeye izin verilmez:

  • Temel tarih segmentleri hariç olmak üzere, seçilmeyen segment alanlarında.

  • Basit türler (ör. Int64Value,StringValue vb.) hariç olmak üzere herhangi bir mesaj türünün alanlarında.

  • Basitler (örneğin, Int64Value, StringValue vb.) hariç olmak üzere herhangi bir mesaj türünün tekrarlanan alanlarının özelliklerinde.

ORDER BY koşulu

ORDER BY koşulu:

  • Sorguda isteğe bağlı bir ibaredir.
  • Sonuçların döndürülme sırasını belirtir. Sıralama şu düzene göre yapılır: FIELD_NAME ORDERING_OPTION (boşlukla ayrılmış).
  • ASC (artan) veya DESC (azalan) olmak üzere iki seçeneğe izin verir. Varsayılan olarak artan sırada gösterilir.

Bu örnek sorgu, kampanyaları tıklama sayısına göre azalan düzende (en yüksekten en düşüğe) sıralar:

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

Birden fazla sıralama

Virgülle ayrılmış bir liste kullanarak ORDER BY ifadesinde birden fazla alan belirtebilirsiniz. Sonuçlar, sorguda belirttiğiniz sırayla düzenlenir.

Bu örnek sorgu, reklam grubu verilerini seçer ve sonuçları önce kampanya adına göre artan, ardından gösterim sayısına göre azalan ve son olarak tıklama sayısına göre azalan sırada düzenler:

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

Sıralama ve sınırlamayı birleştirme

Sonuçlarınızı daha iyi hale getirmek için ORDER BY ifadesini LIMIT ifadesiyle birlikte kullanabilirsiniz.

Bu örnek sorgu, son 30 gün içinde en yüksek gösterime sahip beş kampanyayı döndürür:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 5

Yasaklanmış siparişler

Sipariş vermeye izin verilmez:

  • Seçilmeyen kaynakların özelliklerine göre.
  • Seçilmeyen metriklere göre.
  • Seçilmeyen segmentlere göre.
  • Şu alan türleri için:
    • MESSAGE
    • Yinelenen alanlar
    • Yinelenen alanların özellikleri.

LIMIT koşulu

LIMIT koşulu:

  • Sorguda isteğe bağlı bir ibaredir.
  • Sorgunun döndürdüğü sonuç sayısını sınırlamanıza olanak tanır.

Bu madde, örneğin yalnızca sonuçların bir örneği veya özetiyle ilgileniyorsanız yararlıdır.

Bu örnek sorgu, toplam sonuç sayısını 50 ile sınırlar:

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

PARAMETERS koşulu

PARAMETERS ifadesi, istek için meta parametreler belirtmenize olanak tanır.

Taslakları dahil et

include_drafts parametresi, taslak öğelerin sonuçlara dahil edilip edilmeyeceğini kontrol eder. Varsayılan değer false'dir. Taslak öğeleri dahil etmek için true olarak ayarlayın.

Bu örnek sorgu hem taslak kampanyaları hem de normal kampanyaları döndürür:

SELECT campaign.name
FROM campaign
PARAMETERS include_drafts=true

Seçilmeyenleri atla resource_name

omit_unselected_resource_names parametresi, SELECT ifadesinde açıkça istenmeyen tüm kaynakların resource_name alanını hariç tutmanıza olanak tanır. Varsayılan değer false'dir. Bu parametreyi true olarak ayarlarsanız SELECT maddenizde birincil kaynağın ve ilişkilendirilmiş kaynakların kaynak adını açıkça istemenizi öneririz.

Bu örnek sorgu, campaign.resource_name ve customer.resource_name alanlarını döndürmez. Bunun nedeni, bu alanların SELECT ifadesine dahil edilmemiş olmasıdır:

SELECT
  campaign.name,
  customer.id
FROM campaign
PARAMETERS omit_unselected_resource_names = true

Bu örnek sorgu, campaign.resource_name alanı SELECT ifadesinde açıkça istendiği için döndürür:

SELECT
  campaign.name,
  campaign.resource_name
FROM campaign
PARAMETERS omit_unselected_resource_names = true

Metriklerde kullanılan para birimini değiştirme

metrics_currency parametresi, SELECT maddenize dahil edilen bir metrik hesaplanırken kullanılacak para birimini belirtmenize olanak tanır. Varsayılan olarak customer_id tarafından belirtilen hesabın para birimi kullanılır. Bu parametreyi ayarlarsanız 3 karakterli ISO 4217 para birimi kodunu kullanmanız gerekir. Örneğin: USD, EUR.

Bu örnek sorgu, customer_id ile belirtilen hesabın para biriminde cost_micros metriğini döndürür.

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"

Bu örnek sorgu, cost_micros metriğini Şili pezosu (CLP) cinsinden döndürür.

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"
PARAMETERS metrics_currency = "CLP"

MM genişletmeyi etkinleştirme

Doğru olarak ayarlanan enable_mcc_expansion parametresi, FROM ifadesindeki kaynak için customer_id köklü tüm hesaplardaki metrikleri, alanları ve segmentleri dahil etmenize olanak tanır. metrics_currency parametresinde açıkça belirtilmediği sürece yanıtta customer_id para birimi kullanılır.

Bu örnek sorgu, enable_mcc_expansion parametresi true olarak ayarlandığı için customer_id köklü hesap hiyerarşisindeki tüm hesaplardan bidding_strategy.name, bidding_strategy.type ve metrics.cost_micros değerlerini döndürür.

SELECT
  bidding_strategy.name,
  bidding_strategy.type,
  metrics.cost_micros
FROM bidding_strategy
WHERE segments.date DURING LAST_14_DAYS
PARAMETERS enable_mcc_expansion = true

Daha fazla bilgi