Segmentierung

Die Segmentierung, die in der Google Ads-Benutzeroberfläche als separates Menü verfügbar ist, kann in der Google Ads API implementiert werden, indem Sie einer Suchanfrage einfach das richtige Feld hinzufügen. Wenn Sie einer Abfrage beispielsweise segments.device hinzufügen, enthält der Bericht eine Zeile für jede Kombination aus Gerät und der in der FROM-Klausel angegebenen Ressource. Die statistischen Werte (Impressionen, Klicks, Conversions usw.) werden auf diese Zeilen verteilt.

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

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

Die Ergebnisse, die durch Senden dieser Abfrage an GoogleAdsService.SearchStream zurückgegeben werden, sehen 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 Gerät segmentiert. Daher können für dieselbe Kampagne zwei oder mehr Objekte zurückgegeben werden.

Implizite Segmentierung

Jeder Bericht wird anfangs 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 danach segmentiert, auch wenn das Feld „resource_name“ nicht explizit in der Abfrage enthalten ist. Wenn Sie beispielsweise ad_group als Ressource in der FROM-Klausel angeben, wird ad_group.resource_name automatisch zurückgegeben und Messwerte werden auf Ebene der Anzeigengruppe implizit danach segmentiert.

Bei dieser Abfrage

SELECT metrics.impressions
FROM ad_group

Sie erhalten dann 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"
      }
    }
  ]
}

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 weiterhin Abfragen von der Ressource ad_group aus. Damit ein Segmentfeld in der Ressource „ad_group“ ausgewählt werden kann, 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.

Segmentressourcen

Wenn Sie Daten aus einigen Ressourcen auswählen, haben Sie möglicherweise die Möglichkeit, eine implizite Verbindung zu verknüpften Ressourcen herzustellen, indem Sie deren Felder zusammen mit den Feldern der Ressource in der FROM-Klausel auswählen. Diese verknüpften Ressourcen finden Sie in der Liste Attributed Resources 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“ aller 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 Attributed Resource-Feldern können Sie auch Segmenting Resource-Felder auswählen. Wenn eine bestimmte Ressource auf der Metadatenseite eine Segmenting Resources-Liste hat, wird die Abfrage durch Auswählen von Feldern aus einer der aufgeführten Ressourcen weiter nach dem zurückgegebenen resource_name dieser Segmenting Resource segmentiert. Beispiel: Die Ressource campaign ist als Segmenting Resource für die Ressource campaign_budget aufgeführt. Wenn Sie ein beliebiges Kampagnenfeld wie campaign.name aus der Kampagnenbudget-Ressource auswählen, wird nicht nur das Feld „campaign.name“ zurückgegeben, sondern auch das Feld campaign.resource_name, nach dem segmentiert wird.

Auswahl zwischen Segmenten und Messwerten

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

Bei der Ressource ad_group stehen über 50 Segmente zur Auswahl. Die selectable_with-Liste für segments.hotel_check_in_date enthält jedoch eine viel kleinere Anzahl kompatibler Segmente. Wenn Sie also das Feld segments.hotel_check_in_date in die Klausel SELECT einfügen, werden die verfügbaren Segmente, die Sie auswählen können, auf die Schnittmenge dieser beiden Listen beschränkt.

Wenn Sie einige Segmente hinzufügen, sinken die Messwerte in der Zusammenfassungszeile möglicherweise.
Wenn einer Abfrage mit FROM ad_group_ad segments.keyword.info.match_type hinzugefügt wird, gibt dieses Segment an, dass nur die Zeilen mit Keywords abgerufen und alle Zeilen entfernt werden sollen, die keinem Keyword zugeordnet sind. In diesem Fall wären die Messwerte niedriger, da alle Messwerte ausgeschlossen würden, die nicht zu Keywords gehören.

Regeln für Segmente in der WHERE-Klausel

Wenn sich ein Segment in der WHERE-Klausel befindet, muss es auch in der SELECT-Klausel enthalten sein. Die folgenden Datumssegmente sind davon ausgenommen. Sie werden als Kerndatumssegmente bezeichnet:

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

Regeln für Felder des Kerndatumssegments

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 begrenzter Zeitraum aus Kerndatumssegmenten angegeben werden. Die Datumssegmente müssen nicht mit den in SELECT angegebenen Segmenten übereinstimmen.

Beispiele

Ungültig:Da sich segments.date in der SELECT-Klausel befindet, 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 Kampagnennamen und Klicks zurück, die im angegebenen Zeitraum 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:Mit dieser Abfrage werden Kampagnennamen und Klicks nach Datum für alle Tage im angegebenen Zeitraum zurückgegeben.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Gültig:Mit dieser Abfrage werden Kampagnennamen und Klicks nach Monat für alle Tage im angegebenen Zeitraum zurückgegeben.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
Gültig:Mit dieser Abfrage werden Kampagnennamen und Klicks nach Quartal und dann nach Monat für alle Monate im Jahreszeitraum segmentiert zurückgegeben.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

Die Ressource search_term_view wird außerdem implizit nach Anzeigengruppe und nicht nur nach Suchbegriff segmentiert. Das geht aus der Struktur des Ressourcennamens hervor, der auch die Anzeigengruppe enthält. Daher sehen Sie in den Ergebnissen möglicherweise Zeilen, die scheinbar doppelt sind, weil sie dieselben Suchbegriffe enthalten, in Wirklichkeit aber 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"
      }
    }
  ]
}

Die beiden zurückgegebenen Objekte in diesem Beispiel scheinen zwar Duplikate zu sein, ihre Ressourcennamen unterscheiden sich jedoch, 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 wird. Wir können daher schließen, dass die API wie vorgesehen funktioniert hat und in diesem Fall keine doppelten Objekte zurückgegeben wurden.