您可以向
GoogleAdsService Search 或 SearchStream
方法发送资源、细分和指标字段的查询。如需使用 Google Ads 查询语言构建查询,请使用该
语言语法。如需大致了解
Google Ads 查询语言,请参阅Google Ads 查询语言概览。查询由多个子句组成:
SELECTFROMWHEREORDER BYLIMITPARAMETERS
子句使用字段名称、资源名称、运算符、条件和排序,帮助您选择正确的数据。将这些子句组合成一个查询后,您可以向 Google Ads API 发送请求。
子句
以下部分介绍了每个 Google Ads 查询语言子句的用途和语法。
SELECT
SELECT 子句指定要在请求中提取的一组字段。SELECT 接受以英文逗号分隔的资源字段、细分字段和指标列表,并在响应中返回相应的值。查询中必须 包含 SELECT 子句。
以下示例查询展示了如何为给定资源选择属性:
SELECT
campaign.id,
campaign.name
FROM campaign
您可以在单个请求中请求不同的字段类型,例如:
SELECT
campaign.id,
campaign.name,
bidding_strategy.id,
bidding_strategy.name,
segments.device,
segments.date,
metrics.impressions,
metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
- 主要资源字段
campaign.idcampaign.name
- 归因资源字段
bidding_strategy.idbidding_strategy.name
- 细分字段
segments.devicesegments.date
- 指标
metrics.impressionsmetrics.clicks
- 查询不可选择的字段。这些字段的
selectable元数据属性标记为false。 - 选择重复字段的属性。这些字段的
is_repeated元数据属性标记为true。 - 选择
FROM子句中给定资源不可用的字段。某些资源的属性无法一起选择,并且只有所有指标和细分的一部分可用于FROM子句中的资源。 - 选择彼此不兼容的细分或指标。如需了解详情,请参阅 细分。
如需了解与上述条件相关的信息,请参阅我们的参考文档或 GoogleAdsFieldService。
FROM
FROM 子句指定要返回的主要资源。FROM 子句中的资源定义了给定查询的所有其他子句中可以使用哪些字段。FROM 子句中只能指定一个资源。向
GoogleAdsService Search 或 SearchStream
方法发出的查询中必须 包含 FROM 子句。不过,使用
GoogleAdsFieldService时,不应指定FROM子句。
虽然给定查询的 FROM 子句中只能存在一个资源,但归因资源中的字段也可能可用。这些资源与 FROM 子句中的资源隐式联接,因此您只需将其属性添加到 SELECT 子句即可返回其值。并非所有资源都有归因资源。在以下示例中,您可以从广告组请求广告组 ID 和广告系列 ID:
SELECT
campaign.id,
ad_group.id
FROM ad_group
系统始终会返回主要资源的 resource_name 字段。
在以下示例中,即使未在查询中明确选择 ad_group.resource_name,该字段也会包含在响应中:
SELECT ad_group.id
FROM ad_group
当至少选择一个字段时,归因资源也是如此。
例如,对于以下查询,campaign.resource_name 会包含在响应中:
SELECT
campaign.id,
ad_group.id
FROM ad_group
WHERE
WHERE 子句指定在为请求过滤数据时要应用的条件。使用 WHERE 子句时,请指定一个或多个以 AND 分隔的条件。条件通常遵循 field_name Operator value 模式(或使用 BETWEEN value AND value、IS NULL 或 IS NOT NULL)。查询中可以不包含 WHERE 子句。
以下示例使用 WHERE 返回给定时间段内的指标:
SELECT
campaign.id,
campaign.name,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
您可以结合使用多个条件来过滤数据。此示例请求过去 30 天内在移动设备上获得展示的所有广告系列的点击次数:
SELECT
campaign.id,
campaign.name,
segments.device,
metrics.clicks
FROM campaign
WHERE metrics.impressions > 0
AND segments.device = 'MOBILE'
AND segments.date DURING LAST_30_DAYS
WHERE 子句中的细分也必须位于 SELECT 子句中,但
以下日期细分(称为 核心日期细分)除外:
segments.datesegments.weeksegments.monthsegments.quartersegments.year
在以下查询中,选择了 segments.date。
由于此细分是核心日期细分,因此您必须在 WHERE 子句中提供由 核心日期细分组成的有限日期
范围:
SELECT
campaign.id,
campaign.name,
segments.date,
metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
满足上述条件的所有细分都是 segments.date、segments.week、segments.month、segments.quarter 和 segments.year。如果选择了其中任何一个细分,则必须在 WHERE 子句中使用至少一个细分。
如需详细了解日期过滤,请参阅 日期范围。
过滤时,请注意运算符是否区分大小写。 如需了解详情,请参阅区分大小写。
如需查看运算符的完整列表,请参阅 语言语法。
ORDER BY
ORDER BY 子句指定返回结果的顺序。这样,您就可以根据字段名称按升序或降序排列数据。每个排序都指定为 field_name,后跟 ASC 或 DESC。如果未指定 ASC 或 DESC,则默认顺序为 ASC。查询中可以不包含 ORDER BY 子句。
以下查询按点击次数从高到低对返回的广告系列进行排序:
SELECT
campaign.name,
metrics.clicks
FROM campaign
ORDER BY metrics.clicks DESC
您可以使用以英文逗号分隔的列表在 ORDER BY 子句中指定多个字段。排序的顺序与查询中指定的顺序相同。
例如,在此查询中,选择广告组数据时,结果首先按广告系列名称升序排序,然后按展示次数降序排序,最后按点击次数降序排序:
SELECT
campaign.name,
ad_group.name,
metrics.impressions,
metrics.clicks
FROM ad_group
ORDER BY
campaign.name,
metrics.impressions DESC,
metrics.clicks DESC
LIMIT
借助 LIMIT 子句,您可以指定要返回的结果数量。
如果您只需要一部分结果,此功能非常有用。
例如,LIMIT 可以限制以下查询的结果总数:
SELECT
campaign.name,
ad_group.name,
segments.device,
metrics.impressions
FROM ad_group
ORDER BY metrics.impressions DESC
LIMIT 50
PARAMETERS
借助 PARAMETERS 子句,您可以为请求指定元参数。
这些参数可能会影响返回的行类型。
支持以下元参数:
include_drafts
将 include_drafts 设置为 true 以返回草稿实体。
默认值为 false。
例如,以下查询会提取草稿广告系列以及常规广告系列:
SELECT campaign.name
FROM campaign
PARAMETERS include_drafts = true
omit_unselected_resource_names
将 omit_unselected_resource_names 设置为 true,以在响应中省略每种资源类型的资源名称,除非在 SELECT 子句中明确请求。默认值为 false。
| 查询 | 返回的资源 |
|---|---|
SELECT campaign.name, customer.id FROM campaign |
|
SELECT campaign.name, customer.id FROM campaign PARAMETERS omit_unselected_resource_names = true |
无
|
SELECT campaign.name, campaign.resource_name FROM campaign PARAMETERS omit_unselected_resource_names = true |
|
其他语言规则
除了每个子句的示例之外,Google Ads 查询语言还支持以下行为:
查询的
SELECT子句中不需要 包含主要资源字段。例如,您可以使用一个或多个主要资源字段来过滤数据,而无需选择它们:SELECT campaign.id FROM ad_group WHERE ad_group.status = 'PAUSED'可以为给定资源专门选择指标;无需在查询中使用资源中的其他字段:
SELECT metrics.impressions, metrics.clicks, metrics.cost_micros FROM campaign可以选择细分字段,而不包含任何附带的资源字段或指标:
SELECT segments.device FROM campaignresource_name字段(例如campaign.resource_name)可用于过滤或排序数据:SELECT campaign.id, campaign.name FROM campaign WHERE campaign.resource_name = 'customers/1234567/campaigns/987654'