Verileri verimli bir şekilde yönetin

Birçok Google Ads uygulamasının temel işlevlerinden biri, kullanılmak üzere hesap verilerini almaktır. örnek olaylar (ör. veri analizi, müşteri sorguları ve politikaya uygunluk kontrolleri) Verileri getirirken aşırı yükleme yapmayacak şekilde kullanımınızı optimize etmeniz gerekir sınırlı sayıda kullanıcıya maruz kalabilir. Daha fazla bilgi için hız sınırlamasını uygulamalı güncel iletişim e-posta adresi.

Google'ın raporlar için kaynak kullanımı politikasını anlama

Google Ads API, sunucularının istikrarını korumak için kısıtlamalara tabi tutulur. GoogleAdsService.Search ve Aşırı tüketen GoogleAdsService.SearchStream sorgu kalıpları miktarları hakkında bilgi edindiniz. Belirli bir sorgu kalıbı kısıtlanmışsa diğer hizmet, yöntem ve sorgu kalıpları bu durumdan etkilenmeden çalışmaya devam eder. İlgili içeriği oluşturmak için kullanılan kısıtlanan istekler için aşağıdaki hatalar atılır:

API Sürümü Hata kodu
<= s17 QuotaError.RESOURCE_EXHAUSTED
>= s18 QuotaError.EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION. veya QuotaError.EXCESSIVE_LONG_TERM_QUERY_RESOURCE_CONSUMPTION bağlı olarak ne kadar süre boyunca odaklanacağına karar verir.

Pahalı raporlarınızı tanımlamanıza ve izlemenize yardımcı olmak için, maliyet metriğidir.

Yöntem Maliyet alanı
GoogleAdsService.Search SearchGoogleAdsResponse.query_resource_consumption
GoogleAdsService.SearchStream SearchGoogleAdsStreamResponse.query_resource_consumption

Bu alanların döndürdüğü maliyet metriği, aşağıdakiler gibi çeşitli faktörlere bağlıdır:

  • Hesaplarınızın boyutu
  • Raporlarınızda getirdiğiniz görünümler ve sütunlar
  • Google Ads API sunucularının üzerindeki yük.

Pahalı sorguları takip etmenize yardımcı olmak için, Google Ads'deki ilk toplu çeşitli sorgu kalıplarının kaynak tüketimiyle ilgili istatistikler en iyi yoludur. Size ince ayar yapmanıza yardımcı olmak için güncellenmiş rakamları düzenli olarak yayınlayacağız dikkat edin.

Zaman aralığı Ortalama (p50). P70 (Kısmen yüksek) P95 (Çok yüksek)
Kısa vadeli (5 dakika) 6.000 30.000 1800000
Uzun vadeli (24 saat). 16000 90000 8400000

Örneğin, aşağıdaki gibi bir sorgu kalıbı çalıştırdığınızı varsayın: Rapor başına 600 birim kaynak.

SELECT campaign.id, campaign.name, metrics.cost_micros FROM campaign WHERE
    segments.date = "YYYY-MM-DD"

Bu sorguyu birkaç farklı tarihte birden fazla müşteri hesabı için çalıştırıyorsunuz Sorguyu, segments.date için farklı değerlerle değiştirecek şekilde değiştirerek filtresini uygulayabilirsiniz. Aşağıdaki tabloda, belirli bir hesapta çalıştırabileceğiniz rapor sayısı gösterilmektedir kaynak kullanımınızın çeşitli kaynak kullanımına uygun olacağı şekilde zaman aralığı paket.

Zaman aralığı Ortalama Orta düzeyde yüksek Çok yüksek
Kısa vadeli (5 dakika) 10 50 3000
Uzun vadeli (24 saat). 26 150 14000

Bu sorgu kalıbını 5 dakikada 10 kez çalıştırmak ortalama olarak sayılır kullanım olarak değerlendirilir. Ancak 5 dakikada 3.000 rapor çalıştırmak çok yüksek kullanım olarak sayılır.

Hesabınızın kaynak tüketimini optimize etmek için kullanabileceğiniz çeşitli stratejiler vardır. raporlar. Bu kılavuzun geri kalanında bu stratejilerden bazıları açıklanmaktadır.

Verilerinizi önbelleğe alın

API sunucularından getirdiğiniz varlık ayrıntılarını yerel bir sunucuya çağrı yapmak yerine veri tabanından özellikle de sıklıkla erişilen veya değişen nadiren. Bu durumda change-event ve change-status etkinliklerini kullanın. sonuçları senkronize etmenizden bu yana hangi nesnelerin değiştiğini algılama olanağı sunar.

Rapor çalıştırma sıklığını optimize etme

Google Ads, verilerin güncelliği ve nasıl veriler sıklıkla güncellenir. Bu kılavuzdan yararlanarak ekibinizin sık sık kontrol etmenizi sağlar.

Hesapları düzenli olarak güncellemeniz gerekiyorsa Bu tür hesapların sayısını küçük bir kümeye koyarak, örneğin, Google Ads'in yalnızca ilk hesaplar. Geri kalan her şey daha düşük sıklıkta, örneğin bir kez veya günde iki kez.

Raporlarınızın boyutunu optimize edin

Uygulamanız, çok sayıda işlemi gerçekleştirmek yerine büyük veri grupları çok sayıda küçük rapor vardır. Bu seçimde etkili olan faktörlerden biri de hesap kontrol edin.

Örneğin, belirli bir reklam için istatistikleri gösteren aşağıdaki kodu ele alalım: gruplar ve istatistik veritabanı tablosunu günceller:

  List<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  foreach (long adGroupId in adGroupIds)
  {
    string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
        "metrics.cost_micros, metrics.impressions, segments.date FROM " +
        "ad_group WHERE segments.date DURING LAST_7_DAYS AND " +
        "ad_group.id = ${adGroupId}";
    List<GoogleAdsRow> rows = RunGoogleAdsReport(customerId, query);
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

Bu kod, küçük bir test hesabında iyi bir şekilde çalışır. Bununla birlikte, Google Ads en fazla Kampanya başına 20.000 reklam grubu ve hesap başına 10.000 kampanya. Bu kod bir Google Ads hesabında çalıştırıldığında, Google Ads API sunucularında aşırı yüklenmeye yol açabilir. hız sınırlamasına ve kısıtlamaya neden olabilir.

Tek bir rapor çalıştırıp yerel olarak işlemek daha iyi bir yaklaşım olacaktır. Bir bu yaklaşımın bellek içi haritasıyla gösterilir.

  Hashset<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
      "metrics.cost_micros, metrics.impressions, segments.date FROM " +
      "ad_group WHERE segments.date DURING LAST_7_DAYS";
  List<GoogleAdsRow> rows = RunGoogleAdsReport(customer_id, query);

  var memoryMap = new Dictionary<long, List<GoogleAdsRow>>();
  for each (GoogleAdsRow row in rows)
  {
    var adGroupId = row.AdGroup.Id;

    if (adGroupIds.Contains(adGroupId))
    {
      CheckAndAddRowIntoMemoryMap(row, adGroupId, memoryMap);
    }
  }
  foreach (long adGroupId in memoryMap.Keys())
  {
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

Bu, daha az rapor sayısı nedeniyle Google Ads API sunucularının yükünü azaltır koşmaktan ibaret değildir.

Raporun hafızada tutulamayacak kadar büyük olduğunu fark ederseniz aşağıdaki gibi bir LIMIT ifadesi ekleyerek sorguyu daha küçük gruplara ayırabilirsiniz:

SELECT
  ad_group.id,
  ad_group.name,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  segments.date
FROM ad_group
WHERE segments.date DURING LAST_7_DAYS
  AND ad_group.id IN (id1, id2, ...)
LIMIT 100000

Etiketler, öğeleri gruplandırmanın ve raporlama sayısını azaltmanın başka bir yoludur. daha fazla bilgi edineceksiniz. Daha fazla bilgi edinmek için etiket rehberine bakın.

Getirdiğiniz öğeleri optimize edin

Rapor çalıştırırken, rapora eklediğiniz sütunlara dikkat etmeniz gerekir: dikkat edin. Şu sıklıkta çalışacak şekilde planlanan aşağıdaki örneği düşünün: saat:

SELECT
  customer.id,
  customer.currency_code,
  campaign.id,
  campaign.name,
  ad_group.id,
  ad_group.name,
  ad_group_criterion.keyword.match_type,
  ad_group_criterion.keyword.text,
  ad_group_criterion.criterion_id,
  ad_group_criterion.quality_info.creative_quality_score,
  ad_group_criterion.system_serving_status,
  ad_group_criterion.negative,
  ad_group_criterion.quality_info.quality_score,
  ad_group_criterion.quality_info.search_predicted_ctr,
  ad_group_criterion.quality_info.post_click_quality_score,
  metrics.historical_landing_page_quality_score,
  metrics.search_click_share,
  metrics.historical_creative_quality_score,
  metrics.clicks,
  metrics.impressions
FROM keyword_view
WHERE segments.date DURING LAST_7_DAYS

Her saatte bir değişme olasılığı olan sütunlar yalnızca metrics.clicks ve metrics.impressions. Diğer tüm sütunlar seyrek güncellenir veya güncellenmez. Bu nedenle, bunları saatlik olarak getirmek son derece verimsizdir. Bunları değerlerini yerel veritabanında depolayıp bir değişiklik etkinliği çalıştırın veya change-status raporunu kullanın.

Bazı durumlarda, tek tek kopyalayarak indirdiğiniz satır sayısını filtreler.

Kullanılmayan hesapları temizleme

Uygulamanız üçüncü taraf reklamveren hesaplarını yönetiyorsa müşteri kaybını göz önünde bulundurarak uygulamanızı geliştirmenize yardımcı olabilir. Belirli aralıklarla verilerini içermeyen müşterilerin hesaplarını kaldırmak için süreçlerinizi ve veri depolarınızı temizleyin daha uzun süre kullanmasına izin verir. Kullanılmayan Google Ads hesaplarını temizlerken şu yönergeleri göz önünde bulundurun:

  • Müşterinizin uygulamanıza yönetmesi için verdiği yetkilendirmeyi iptal etme giriş yapmış olabilir.
  • Müşterinin Google Ads hesaplarına API çağrıları yapmayı durdurma. Bu, cron işleri ve 3 boyutlu veri ardışık düzeni gibi çevrimdışı işlere kullanıcı müdahalesi olmadan çalışacak şekilde tasarlanmıştır.
  • Müşteri yetkilendirmesini iptal ettiyse başvurunuz durumu düzgünce ele alın ve geçersiz API çağrılarının Google'ın API sunucuları.
  • Müşteri Google Ads hesabını iptal ettiyse, bu durumda kullanıcının Google'ın API sunucularına geçersiz API çağrıları göndermekten kaçının ve Google'ın API sunucularına geçersiz API çağrıları göndermekten kaçının.
  • Müşterinin Google Ads hesaplarından indirdiğiniz verileri şuradan silin: yerel veritabanını etkinleştirmeniz gerekir.