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.