Segmentierung

Die Segmentierung ist in der Google Ads-Benutzeroberfläche als separates Menü verfügbar und kann in der Google Ads API implementiert werden. Dazu muss einer Abfrage einfach das richtige Feld hinzugefügt werden. Wenn Sie beispielsweise segments.device zu einer Abfrage hinzufügen, wird ein Bericht mit einer Zeile für jede Kombination aus Gerät und der in der FROM-Klausel angegebenen Ressource erstellt, wobei die statistischen Werte (Impressionen, Klicks, Conversions usw.) zwischen ihnen aufgeteilt werden.

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

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

Das Ergebnis beim Senden dieser Abfrage an GoogleAdsService.SearchStream sieht in etwa so aus:

{
  "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 das zweite Objekt, einschließlich des Ressourcennamens, identisch sind. Die Impressionen werden nach device segmentiert, sodass für dieselbe Kampagne zwei oder mehr Objekte zurückgegeben werden können.

Implizite Segmentierung

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

Für diese Abfrage

SELECT metrics.impressions
FROM ad_group

erhalten Sie einen JSON-String wie diesen:

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

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

Auswählbare Segmentfelder

In der FROM-Klausel können nicht alle Segmentfelder für eine bestimmte Ressource ausgewählt werden. Die Abfrage wird weiterhin mit der ad_group-Ressource ausgeführt. Damit ein Segmentfeld in der Ressource „ad_group“ auswählbar ist, muss es in der Liste Segments für „ad_group“ vorhanden 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 zusammenzuführen. Dazu wählen Sie deren Felder neben den Feldern der Ressource in der FROM-Klausel aus. Diese zugehörigen Ressourcen finden Sie in der Attributed Resources-Liste für die Ressource auf der Metadatenseite der FROM-Klausel. Im Fall der Ressource ad_group können Sie auch Felder aus der Ressource campaign auswählen. Das Feld „resource_name“ einer beliebigen 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 dieser Segmenting Resource segmentiert wird. Sie werden beispielsweise feststellen, dass die Ressource campaign als Segmenting Resource für die Ressource campaign_budget aufgeführt ist. 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 zurückgegeben und segmentiert.

Auswahl zwischen Segmenten und Messwerten

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

Bei der Ressource ad_group stehen mehr als 50 verfügbare Segmente zur Auswahl. Die selectable_with-Liste für segments.hotel_check_in_date enthält jedoch viel kleinere kompatible Segmente. Wenn Sie also das Feld segments.hotel_check_in_date in die SELECT-Klausel einfügen, begrenzen Sie die verfügbaren Segmente, die ausgewählt werden können, auf die Schnittmenge dieser beiden Listen.

Beim Hinzufügen einiger Segmente 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 entfernt alle Zeilen, die nicht mit einem Keyword verknüpft sind. In diesem Fall wären die Messwerte niedriger, da alle Messwerte, die sich nicht auf Keywords beziehen, ausgeschlossen werden.

Regeln für Segmente in der WHERE-Klausel

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

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

Regeln für wichtige Datumssegmente

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 wichtigen Datumssegmenten angegeben werden. Die Datumssegmente müssen nicht mit denen in SELECT übereinstimmen.

Beispiele

Ungültig:Da sich segments.date in der SELECT-Klausel befindet, müssen Sie in der WHERE-Klausel für segments.date, segments.week, segments.month, segments.quarter oder segments.year einen endlichen Zeitraum angeben.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Gültig:Diese Abfrage gibt Kampagnennamen und Klicks zurück, die während des Zeitraums erzielt wurden. segments.date muss nicht in der SELECT-Klausel angegeben werden.
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 des Zeitraums 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 Kampagnennamen und Klicks zurück, die nach Monat für alle Tage im Zeitraum segmentiert sind.
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 für alle Monate im Jahresbereich Kampagnennamen und Klicks zurück, die nach Quartal und dann nach Monat 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 und nicht nur nach einem Suchbegriff segmentiert, wie sich an der Struktur des Ressourcennamens ablesen lässt, der auch die Anzeigengruppe enthält. Daher kann es vorkommen, dass einige scheinbar doppelte Zeilen mit denselben Suchbegriffen in Ihren Ergebnissen erscheinen, obwohl die Zeilen zu einer anderen Anzeigengruppe gehören:

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

Obwohl die beiden zurückgegebenen Objekte in diesem Beispiel Duplikate zu sein scheinen, sind ihre Ressourcennamen tatsächlich unterschiedlich, insbesondere im Bereich „Anzeigengruppe“. Das bedeutet, dass der Suchbegriff „google fotos“ den beiden Anzeigengruppen (ID 2222222222 und 33333333333) am selben Datum (15.06.2015) zugeordnet ist. Daraus können wir schließen, dass die API wie beabsichtigt funktioniert und in diesem Fall keine doppelten Objekte zurückgegeben hat.