Сегментация

Сегментация доступна в пользовательском интерфейсе Google Ads в виде отдельного меню. Вы можете реализовать сегментацию в API Google Ads, добавив соответствующее поле в запрос. Например, предположим, вы добавите segments.device в запрос. В результате будет создан отчет со строкой для каждой комбинации устройства и указанного ресурса в предложении FROM , а также статистические значения (показы, клики, конверсии и т. д.), распределенные между ними.

В пользовательском интерфейсе Google Ads можно использовать только один сегмент за раз, но с помощью API можно указать несколько сегментов в одном запросе.

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

Результаты отправки этого запроса в GoogleAdsService.SearchStream будут выглядеть примерно так (в формате JSON):

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

In this sample result, attributes for the first and second objects, including the resource name, are the same. The impressions are segmented by device , and thus two or more objects can be returned for the same campaign.

Неявная сегментация

Every report is initially segmented by the resource specified in the FROM clause. The resource_name field of the resource in the FROM clause is returned and metrics are segmented by it, even when the resource_name field is not explicitly included in the query. For example, when you specify ad_group as the resource in the FROM clause, then ad_group.resource_name will automatically be returned and metrics will implicitly segment against it at the ad_group level.

Итак, для этого запроса,

SELECT metrics.impressions
FROM ad_group

В результате вы получите строку JSON примерно такого вида:

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

Поле resource_name объекта adGroup всегда возвращается, поскольку ad_group указан как ресурс в предложении FROM .

Выбираемые поля сегмента

Not all segment fields are selectable for a given resource in the FROM clause. As an example, suppose you continue to query from the ad_group resource. For a segment field to be selectable from the ad_group resource, that field needs to exist in the Segments list for ad_group. The Segments list is the yellow portion of the available fields table on the ad_group resource's metadata page.

Сегментные ресурсы

При выборе данных из некоторых ресурсов может быть возможность неявного объединения с связанными ресурсами путем выбора их полей вместе с полями ресурса в предложении FROM . Эти связанные ресурсы можно найти в списке Attributed Resources на странице метаданных предложения FROM . В случае ресурса ad_group вы увидите, что также можете выбрать поля из ресурса campaign . Поле resource_name любого Attributed Resources имеющего хотя бы одно поле в предложении SELECT будет автоматически возвращено, даже если поле resource_name явно не включено в запрос.

Аналогично выбору полей Attributed Resource , вы также можете выбрать поля Segmenting Resource . Если у данного ресурса на странице метаданных есть список Segmenting Resources , то при выборе полей из одного из перечисленных ресурсов запрос будет дополнительно сегментирован по возвращаемому resource_name этого Segmenting Resource . Например, вы увидите, что ресурс campaign указан как Segmenting Resource для ресурса campaign_budget . Выбор любого поля кампании, например campaign.name , из ресурса campaign_budget приводит не только к возврату поля campaign.name , но и к возврату поля campaign.resource_name , по которому будет производиться сегментация.

Возможность выбора между сегментами и показателями

Поле сегмента может быть несовместимо с некоторыми другими полями сегментов или с некоторыми полями метрик. Чтобы определить, какие поля сегментов совместимы друг с другом, просмотрите список selectable_with сегментов в предложении SELECT .

В случае ресурса ad_group доступно более 50 сегментов для выбора. Однако список selectable_with для segments.hotel_check_in_date содержит гораздо меньший набор совместимых сегментов. Это означает, что если вы добавите поле segments.hotel_check_in_date в предложение SELECT , вы ограничите количество доступных для выбора сегментов пересечением этих двух списков.

Неявная фильтрация путем выбора сегмента

Когда вы выбираете определенные поля сегмента в своем запросе, API Google Ads может неявно фильтровать результаты, чтобы включить только те строки, где этот сегмент применим и имеет значение.

Влияние segments.keyword.*

A common and important example of this behavior occurs when selecting any field under segments.keyword (such as segments.keyword.info.text and segments.keyword.ad_group_criterion ).

  • Исключение трафика, не связанного с ключевыми словами: если вы включите какое-либо поле segments.keyword.* в свой запрос SELECT , это ограничит результаты только теми строками, которые непосредственно связаны с критерием группы объявлений по ключевым словам в поисковой сети.
  • Затронутые типы кампаний: Следовательно, данные из типов кампаний или групп объявлений, которые не зависят от ключевых слов поиска, исключаются из результатов. Это включает, помимо прочего:

    • Динамическая поисковая реклама (DSA): Потому что целевая аудитория DSA определяется контентом веб-сайта, а не ключевыми словами.
    • Торговые кампании: в которых вместо ключевых слов используются группы товаров.
    • Кампании Performance Max: Хотя Performance Max может размещать рекламу в поисковой выдаче, отчеты по ним обычно не сегментируются по тем же критериям ключевых слов.
  • Медийная сеть: Поля segments.keyword.* относятся к ключевым словам, используемым в поисковой сети . Они не сегментируют данные по ключевым словам медийной сети или другим методам таргетинга в медийной сети.

Best Practice: If your analysis needs to include performance data from DSA, Shopping, or other non-search-keyword based sources, don't include fields from segments.keyword.* in your query. Analyze data across all campaign types first, and apply keyword segmentation only when focusing on Search keyword performance.

Правила для сегментов в предложении WHERE

Если сегмент присутствует в предложении WHERE , он также должен присутствовать в предложении SELECT . Исключением из этого правила являются следующие сегменты дат, которые называются основными сегментами дат :

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

Правила для основных полей сегментов даты

The segments segments.date , segments.week , segments.month , segments.quarter , and segments.year function as follows:

  • Эти сегменты можно фильтровать в предложении WHERE , не указывая их в предложении SELECT .

  • Если какой-либо из этих сегментов присутствует в предложении SELECT , то в предложении WHERE необходимо указать конечный диапазон дат, состоящий из основных сегментов дат . Сегменты дат не обязательно должны совпадать с сегментами, указанными в SELECT .

Примеры

Недопустимо: Поскольку segments.date находится в предложении SELECT , необходимо указать конечный диапазон дат в предложении WHERE для segments.date , segments.week , segments.month , segments.quarter или segments.year .
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Допустимое значение: Этот запрос возвращает названия кампаний и количество кликов, совершенных в указанном диапазоне дат. Обратите внимание, что segments.date не обязательно должно присутствовать в предложении SELECT .
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Valid: This query returns campaign names and clicks segmented by date for all days in the date range.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Допустимое значение: Этот запрос возвращает названия кампаний и клики, сегментированные по месяцам, за все дни в указанном диапазоне дат.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Valid: This query returns campaign names and clicks segmented by quarter and then by month for all months in the year range.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2019
  AND segments.year < 2024

поиск_термин_просмотр

Ресурс search_term_view также неявно сегментируется по группам объявлений, а не только по поисковому запросу, что отражается в структуре его имени ресурса , которое также включает группу объявлений. Поэтому в результатах поиска могут появляться строки с одинаковыми поисковыми запросами, но принадлежащие разным группам объявлений.

{
  "results":[
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"3"
      },
      "segments":{
        "date":"2024-06-15"
      }
    },
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"2"
      },
      "segments":{
        "date":"2024-06-15"
      }
    }
  ]
}

Хотя в этом примере два возвращенных объекта кажутся дубликатами, их имена ресурсов на самом деле различаются, особенно в части «группа объявлений». Это означает, что поисковый запрос «google photos» относится к двум группам объявлений (ID 2222222222 и 33333333333 ) за одну и ту же дату (15.06.2024). Таким образом, можно заключить, что API сработал должным образом и в данном случае не вернул дубликаты объектов.