分割

在 Google Ads 界面中,细分是一个单独的菜单,您可以 只需向查询添加适当的字段即可。对于 例如,将 segments.device 添加到 则会生成一份报告,其中的每种设备和 FROM 子句中指定的资源,而 统计值(展示次数、点击次数、转化次数等)。

在 Google Ads 界面中,每次只能使用一个细分,并且 则可以在同一查询中指定多个细分。

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

请注意,在上面的示例结果中,第一个和第二个 所有对象均相同。展示次数已细分 device,从而针对同一个广告系列返回两个或更多个对象。

隐式细分

每个报告最初都按 FROM 中指定的资源进行细分 子句。FROM 子句中资源的 resource_name 字段为 并且指标会按其细分,即使 resource_name 字段是 未明确包含在查询中。例如,当您指定 ad_group 作为 FROM 子句中的资源,则 ad_group.resource_name将会 系统会自动返回指标,并且指标会在 广告组级。

对于这个查询

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

请注意,系统始终会返回 adGroupresource_name 字段,因为 在 FROM 子句中将 ad_group 指定为资源。

可选择的细分字段

对于 FROM 子句中的给定资源,并非所有细分字段都可供选择。 例如,我们将继续从 ad_group 中查询 资源。若要从 ad_group 资源中选择细分受众群字段, 该字段必须位于 ad_group 的 Segments 列表中。Segments 列表中是可用字段表的黄色部分, ad_group 资源的元数据页面。

细分资源

从某些资源中进行选择时,您可以选择隐式联接 选择相关资源的字段以及 FROM 子句中使用的资源。您可以在 针对 FROM 子句的元数据中资源的 Attributed Resources 列表 页面。对于 ad_group 资源,您将看到 您还可以从 campaign 资源。任何 Attributed Resources 的 resource_name 字段,至少 系统会自动返回 SELECT 子句中的 1 个字段,即使 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 子句,您将限制 剩下要选的路段到两者的交集上 列表。

添加某些细分后,摘要行中的指标可能会降低
如果将segments.keyword.info.match_type添加到 FROM ad_group_ad 时,该细分会指示查询只获取 包含关键字的数据,并删除任何 关键字。在这种情况下,这些指标会比较低,因为它会排除 非关键字指标

WHERE 子句中细分的规则

当细分包含在 WHERE 子句中时,它也必须位于 SELECT 子句中 子句。以下日期细分不受此规则限制: 称为“核心日期细分”:

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

针对核心日期细分字段的规则

segments.datesegments.weeksegments.monthsegments.quartersegments.year 函数如下所示:

  • 可以在 WHERE 子句中过滤这些片段,而不显示 。SELECT

  • 如果其中任何细分包含在 SELECT 子句中,则指定限定的日期范围 由核心日期细分组成的字符串必须在 WHERE 子句中指定 (日期细分无需与 SELECT)。

示例

无效:由于 segments.dateSELECT子句中,您需要在 segments.dateWHERE 子句, segments.weeksegments.monthsegments.quartersegments.year
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
有效:此查询会返回广告系列名称和 在该日期范围内累积的点击次数。请注意,segments.date 不需要出现在 SELECT 子句中。
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:此查询会返回广告系列名称和 日期范围内所有日期按日期细分的点击次数。
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:此查询会返回广告系列名称和 按月细分的日期范围内所有日期的点击次数。
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:此查询会返回广告系列名称和 按季度和月份对年度范围内所有月份进行细分的点击次数。
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

请注意,对于 search_term_view 资源,它也是 按照广告组(而不仅仅是搜索字词)隐式细分,如“ 其资源结构的 名称, 广告组也包含在其中因此,您会看到一些看似重复的 与搜索结果中出现相同的搜索字词的行 那么这些行应该属于不同的广告组:

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

尽管此示例中返回的两个对象似乎是重复的, 其资源名称实际上有所不同 部分。这意味着搜索字词“Google 相册”都会归因于 广告组(ID 为 222222222233333333333)在同一天 (2015-06-15)。 因此,我们可以得出结论,该 API 按预期工作,并未返回 就会出现重复对象。