Segmentierung

Die Segmentierung, die in der Google Ads-Benutzeroberfläche als separates Menü verfügbar ist, lässt sich in der Google Ads API implementieren, indem Sie einfach einer Abfrage das entsprechende Feld hinzufügen. Wenn Sie beispielsweise segments.device in eine Abfrage einfügen, wird ein Bericht erstellt, der für jede Kombination aus Gerät und der angegebenen Ressource in der FROM-Klausel eine Zeile enthält und die statistischen Werte (Impressionen, Klicks, Conversions usw.) zwischen ihnen aufgeteilt sind.

In der Google Ads-Benutzeroberfläche kann jeweils nur ein Segment verwendet werden. Mit der API lassen sich hingegen mehrere Segmente in derselben Abfrage angeben.

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

Das Ergebnis des Sendens dieser Abfrage an GoogleAdsService.SearchStream würde in etwa so aussehen:

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

Beachten Sie, dass im obigen Beispielergebnis die Attribute für das erste und zweite Objekt, einschließlich des Ressourcennamens, identisch sind. Die Impressionen werden nach Gerät segmentiert, sodass zwei oder mehr Objekte für dieselbe Kampagne zurückgegeben werden können.

Implizite Segmentierung

Jeder Bericht wird zuerst nach der in der FROM-Klausel angegebenen Ressource segmentiert. Das Feld „resource_name“ der Ressource in der FROM-Klausel wird zurückgegeben und Messwerte werden damit segmentiert, auch wenn das Feld „resource_name“ nicht explizit in der Abfrage enthalten ist. Wenn Sie beispielsweise in der FROM-Klausel ad_group als Ressource angeben, wird ad_group.resource_name automatisch zurückgegeben und Messwerte werden implizit auf Anzeigengruppenebene segmentiert.

Für diese Abfrage

SELECT metrics.impressions
FROM ad_group

würden Sie einen JSON-String wie den folgenden erhalten:

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

Das Feld resource_name von adGroup wird immer zurückgegeben, da ad_group in der FROM-Klausel als Ressource angegeben wurde.

Auswählbare Segmentfelder

Nicht alle Segmentfelder können für eine bestimmte Ressource in der FROM-Klausel ausgewählt werden. Als Beispiel führen wir Abfragen mit der Ressource ad_group aus. Damit ein Segmentfeld aus der Ressource „ad_group“ ausgewählt werden kann, muss es in der Liste Segments für „ad_group“ enthalten sein. Die Liste Segments ist der gelbe Teil der Tabelle mit den verfügbaren Feldern auf der Metadatenseite der Ressource ad_group.

Ressourcen segmentieren

Bei der Auswahl aus einigen Ressourcen haben Sie möglicherweise die Möglichkeit, zugehörige Ressourcen implizit zu verknüpfen. Dazu wählen Sie in der FROM-Klausel die zugehörigen Felder neben den Feldern der Ressource aus. Sie finden diese zugehörigen Ressourcen in der Attributed Resources-Liste der Ressource auf der Metadatenseite der FROM-Klausel. Bei der Ressource ad_group können Sie auch Felder aus der Ressource campaign auswählen. Das Feld „resource_name“ von Attributed Resources mit mindestens einem Feld in der SELECT-Klausel wird automatisch zurückgegeben, auch wenn das Feld „resource_name“ nicht explizit in der Abfrage enthalten ist.

Ähnlich wie bei der Auswahl von Attributed Resource-Feldern können Sie auch Segmenting Resource-Felder auswählen. Wenn auf der Metadatenseite einer bestimmten Ressource eine Segmenting Resources-Liste vorhanden ist, führt die Auswahl von Feldern aus einer dieser aufgeführten Ressourcen dazu, dass die Abfrage weiter nach dem zurückgegebenen „resource_name“ des Segmenting Resources segmentiert wird. So sehen Sie beispielsweise, dass die Ressource campaign als Segmenting Resource für die Ressource campaign_budget aufgeführt wird. Wenn Sie ein Kampagnenfeld wie campaign.name aus der Ressource „campaign_budget“ auswählen, wird nicht nur das Feld „campaign.name“ zurückgegeben, sondern auch das Feld campaign.resource_name und die entsprechende Segmentierung.

Auswahl zwischen Segmenten und Messwerten

Ein Segmentfeld ist möglicherweise nicht mit einigen anderen Segmentfeldern oder Messwertfeldern kompatibel. Um zu ermitteln, welche Segmentfelder miteinander kompatibel sind, können Sie der selectable_with-Liste der Segmente in der SELECT-Klausel entnehmen.

Für die Ressource ad_group sind mehr als 50 Segmente verfügbar. Die selectable_with-Liste für segments.hotel_check_in_date enthält jedoch viel weniger kompatible Segmente. Wenn Sie also das Feld segments.hotel_check_in_date in die SELECT-Klausel einfügen, beschränken Sie die verfügbaren Segmente, die Sie auswählen können, auf die Schnittmenge dieser beiden Listen.

Wenn Sie Segmente hinzufügen, können sich die Messwerte in der Zusammenfassungszeile verringern
Wenn segments.keyword.info.match_type einer Abfrage mit FROM ad_group_ad hinzugefügt wird, weist dieses Segment die Abfrage an, nur die Datenzeilen abzurufen, die Keywords enthalten, und alle Zeilen zu entfernen, die nicht mit einem Keyword verknüpft sind. In diesem Fall wären die Messwerte niedriger, da alle nicht Keyword-bezogenen Messwerte ausgeschlossen würden.

Regeln für Segmente in der WHERE-Klausel

Befindet sich ein Segment in der WHERE-Klausel, muss es auch in der SELECT-Klausel enthalten sein. Ausgenommen von dieser Regel sind die folgenden Datumssegmente, die als Kerndatensegmente bezeichnet werden:

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

Regeln für Kerndatensegmentfelder

Die Segmente segments.date, segments.week, segments.month, segments.quarter und segments.year funktionieren so:

  • Diese Segmente können in der WHERE-Klausel gefiltert werden, ohne in der SELECT-Klausel zu erscheinen.

  • Wenn eines dieser Segmente in der SELECT-Klausel enthalten ist, muss in der WHERE-Klausel ein endlicher Zeitraum aus Kerndatensegmenten angegeben werden. Die Datumssegmente müssen nicht mit denen in SELECT übereinstimmen.

Beispiele

Ungültig: Da segments.date in der SELECT-Klausel enthalten ist, müssen Sie in der WHERE-Klausel einen endlichen Zeitraum für segments.date, segments.week, segments.month, segments.quarter oder segments.year angeben.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Gültig:Diese Abfrage gibt die Kampagnennamen und Klicks zurück, die während des Zeitraums erzielt wurden. segments.date muss nicht in der SELECT-Klausel enthalten sein.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Gültig:Diese Abfrage gibt nach Datum segmentierte Kampagnennamen und Klicks für alle Tage im Zeitraum zurück.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Gültig:Diese Abfrage gibt die nach Monat segmentierten Kampagnennamen und Klicks für alle Tage im Zeitraum zurück.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Gültig:Diese Abfrage gibt Kampagnennamen und Klicks zurück, die nach Quartal und dann nach Monat für alle Monate im Jahresbereich segmentiert sind.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

Für die Ressource search_term_view ist sie außerdem implizit nach Anzeigengruppe segmentiert, nicht nur nach Suchbegriff. Dies lässt sich an der Struktur des Ressourcennamens ablesen, der auch die Anzeigengruppe enthält. Daher erscheinen in den Ergebnissen einige scheinbar doppelte Zeilen mit den gleichen Suchbegriffen, obwohl die Zeilen zu einer anderen Anzeigengruppe gehören würden:

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

Auch wenn die beiden zurückgegebenen Objekte in diesem Beispiel Duplikate zu sein scheinen, unterscheiden sich ihre Ressourcennamen tatsächlich, insbesondere im Bereich „Anzeigengruppe“. Das bedeutet, dass der Suchbegriff „google photos“ den beiden Anzeigengruppen (ID 2222222222 und 33333333333) am selben Datum (15.06.2015) zugeordnet wird. Daraus lässt sich schließen, dass die API wie beabsichtigt funktioniert und in diesem Fall keine doppelten Objekte zurückgegeben wurden.