Daten effizient verwalten

Das Abrufen von Kontodaten zur Nutzung ist eine Kernfunktion vieler Google Ads-Anwendungen. wie Datenanalysen, Kundenabfragen und Prüfungen auf Einhaltung von Richtlinien. Während Sie die Daten abrufen, sollten Sie die Nutzung optimieren, um eine Überlastung zu vermeiden. Google-Server oder Risiko einer Ratenbegrenzung. Weitere Informationen finden Sie in den Leitfäden zu Ratenbegrenzung und Aufrechterhaltung eines Aktuelle Kontakt-E-Mail-Adresse.

Informationen zur Google-Richtlinie zur Ressourcennutzung für Berichte

Um die Stabilität der Server zu gewährleisten, drosselt die Google Ads API GoogleAdsService.Search und GoogleAdsService.SearchStream-Abfragemuster, die übermäßig viele der API-Ressourcen. Wenn ein bestimmtes Abfragemuster gedrosselt wird, Dienste, Methoden und Abfragemuster bleiben unverändert. Die Die folgenden Fehler werden für gedrosselte Anfragen ausgegeben:

API-Version Fehlercode
<= V17 QuotaError.RESOURCE_EXHAUSTED
>= V18 QuotaError.EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION oder QuotaError.EXCESSIVE_LONG_TERM_QUERY_RESOURCE_CONSUMPTION, je nachdem, für die Dauer einer hohen Ressourcennutzung.

Damit Sie Ihre teuren Berichte leichter erkennen und überwachen können, Kostenmesswerts für einzelne Berichte.

Methode Kostenfeld
GoogleAdsService.Search SearchGoogleAdsResponse.query_resource_consumption
GoogleAdsService.SearchStream SearchGoogleAdsStreamResponse.query_resource_consumption

Der von diesen Feldern zurückgegebene Kostenmesswert hängt von verschiedenen Faktoren ab, z. B.

  • Größe Ihrer Konten
  • Die Ansichten und Spalten, die Sie in Ihren Berichten abrufen
  • Die Auslastung der Google Ads API-Server

Damit Sie teure Suchanfragen besser im Blick behalten können, veröffentlichen wir zunächst zusammengefasste Statistiken zum Ressourcenverbrauch verschiedener Abfragemuster, die wir auf unseren Servern. Wir veröffentlichen regelmäßig aktualisierte Zahlen, um Sie bei der Optimierung zu unterstützen. Ihre Abfragen anpassen.

Zeitfenster Durchschnitt (p50). P70 (mäßig hoch) P95 (sehr hoch)
Kurzfristig (5 Min.) 6000 30000 1800000
Langfristig (24 Stunden). 16.000 90000 8400000

Nehmen wir beispielsweise an, Sie führen das folgende Abfragemuster aus, das 600 Ressourceneinheiten pro Bericht.

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

Sie führen diese Abfrage für mehrere Kundenkonten und verschiedene individuelle Termine aus. indem Sie die Abfrage ändern, um segments.date durch unterschiedliche Werte zu ersetzen aus. In der folgenden Tabelle sehen Sie, wie viele Berichte Sie in einem bestimmten Zeitfenster, in dem Ihre Ressourcennutzung in die jeweilige Ressourcennutzung passt Buckets.

Zeitfenster Durchschnitt Mäßig hoch Sehr hoch
Kurzfristig (5 Min.) 10 50 3000
Langfristig (24 Stunden). 26 150 14000

Wenn dieses Abfragemuster zehnmal in 5 Minuten ausgeführt wird, wird ein Durchschnitt gezählt. und 3.000 Berichte innerhalb von 5 Minuten als sehr hohe Nutzung anrechnen.

Es gibt mehrere Strategien zur Optimierung des Ressourcenverbrauchs Berichte. Im weiteren Verlauf dieses Leitfadens werden einige dieser Strategien behandelt.

Daten im Cache speichern

Sie sollten die Entitätsdetails, die Sie von den API-Servern abrufen, in einem lokalen anstatt den Server jedes Mal aufzurufen, wenn Sie die Daten benötigen. insbesondere für Entitäten, auf die häufig zugegriffen wird oder die sich ändern, sehr selten. Verwenden Sie change-event und change-status, wobei Folgendes gilt: erkennen, welche Objekte sich seit der letzten Synchronisierung der Ergebnisse geändert haben.

Die Häufigkeit der Berichterstellung optimieren

In Google Ads gibt es Richtlinien zur Datenaktualität und zur die Daten regelmäßig aktualisiert werden. Anhand dieser Anleitung können Sie feststellen, um Berichte regelmäßig abzurufen.

Falls Sie Konten regelmäßig aktualisieren müssen, empfehlen wir Ihnen, das nur auf die 20 wichtigsten Google Ads-Konten Konten. Der Rest kann in geringerer Häufigkeit aktualisiert werden, z. B. einmal oder

Berichtgröße optimieren

Ihre Anwendung sollte große Batches von Daten abrufen, anstatt eine große kleine Berichte. Ein Faktor, der bei dieser Auswahl spielt, ist das Konto .

Betrachten Sie beispielsweise den folgenden Code, mit dem die Statistiken für eine bestimmte Anzeige abgerufen werden. und aktualisieren eine Statistik-Datenbanktabelle:

  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);
  }

Dieser Code funktioniert gut in einem kleinen Testkonto. Google Ads unterstützt jedoch bis zu 20.000 Anzeigengruppen pro Kampagne und 10.000 Kampagnen pro Konto Wenn dieser Code ein großes Google Ads-Konto nutzt, können die Google Ads API-Server überlastet werden. was zu Ratenbegrenzung und Drosselung führt.

Ein besserer Ansatz wäre, einen einzelnen Bericht zu erstellen und lokal zu verarbeiten. Eins Diese Methode mit einer In-Memory-Karte wird gezeigt.

  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);
  }

Durch die geringere Anzahl an Berichten wird die Belastung der Google Ads API-Server reduziert. ausgeführt wird.

Wenn Sie feststellen, dass der Bericht zu groß ist, um ihn zu speichern, können Sie die Abfrage in kleinere Gruppen aufteilen, indem Sie eine LIMIT-Klausel wie diese hinzufügen:

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

Labels sind eine weitere Möglichkeit, Entitäten zu gruppieren und die Anzahl der Berichte zu reduzieren Abfragen. Weitere Informationen

Abrufe optimieren

Beim Erstellen von Berichten sollten Sie auf die Spalten achten, die Sie in Ihre Abfragen anpassen. Betrachten Sie das folgende Beispiel, das planmäßig alle Stunde:

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

Die einzigen Spalten, die sich wahrscheinlich stündlich ändern, sind metrics.clicks und metrics.impressions. Alle anderen Spalten werden selten oder nicht Daher ist es sehr ineffizient, sie stündlich abzurufen. Sie könnten diese Werte in einer lokalen Datenbank und führen ein Änderungsereignis oder Änderungsstatus, um Änderungen ein- oder zweimal täglich herunterzuladen.

In einigen Fällen können Sie die Anzahl der heruntergeladenen Zeilen reduzieren, Filter entsprechend anpassen.

Nicht verwendete Konten bereinigen

Falls in Ihrer Anwendung Konten von Drittanbietern verwaltet werden, müssen Sie bei der Entwicklung Ihrer Anwendung unter Berücksichtigung der Kundenabwanderung. Sie sollten in regelmäßigen Abständen Bereinigen Sie Ihre Prozesse und Datenspeicher, um Konten für Kunden zu entfernen, Ihre Anwendung länger nutzen können. Wenn Sie nicht verwendete Google Ads-Konten bereinigen, sollten Sie Folgendes beachten:

  • Autorisierung, die der Kunde Ihrer Anwendung erteilt hat, widerrufen sein Konto.
  • Senden Sie keine API-Aufrufe an die Google Ads-Konten des Kunden mehr. Dies gilt für insbesondere für Offlinejobs wie Cronjobs und Datenpipelines, die ohne Nutzereingriff ausgeführt werden können.
  • Wenn der Kunde seine Autorisierung widerrufen hat, sollte Ihre Anwendung die Situation ordnungsgemäß zu bewältigen und ungültige API-Aufrufe zu vermeiden, den API-Servern von Google.
  • Wenn der Kunde sein Google Ads-Konto aufgelöst hat, sollten Sie und vermeiden, ungültige API-Aufrufe an die API-Server von Google zu senden.
  • Löschen Sie die Daten, die Sie aus den Google Ads-Konten des Kunden heruntergeladen haben, aus Ihrem in der lokalen Datenbank nach einer angemessenen Zeit.