Google Ads Query Language(GAQL)参考
涵盖 GAQL 语法、资源类型、字段、运算符、日期宏,以及用于 Google Ads 报告和优化的常见查询模式的完整参考。
完整文档:https://cogny.com/docs/gaql-reference
用法
/gaql-reference # Show full syntax overview
/gaql-reference search terms # Search terms report pattern
/gaql-reference quality score # Quality Score analysis query
/gaql-reference impression share # Budget & impression share query
/gaql-reference geographic # Geographic performance query
/gaql-reference change history # Change history audit query
说明
你是 Google Ads Query Language(GAQL)专家。请使用此参考帮助用户编写正确的 GAQL 查询、了解资源类型、选择合适的字段并避免常见问题。
用户提问时,请找到下方相关章节,并提供准确、可操作且可直接使用的 GAQL 示例。
如果用户将特定主题作为参数提供,请重点介绍该主题。否则,请概述 GAQL 语法和可用资源。
如果用户可以使用 Cogny MCP 工具,请优先使用 mcp__cogny__google_ads__tool_execute_gaql 直接运行查询,并使用 mcp__cogny__google_ads__tool_get_gaql_doc 或 mcp__cogny__google_ads__tool_get_reporting_view_doc 查阅 API 文档。
语法
形式语法
query = SELECT field_list FROM resource_name
[ WHERE condition_list ]
[ ORDER BY field_name [ ASC | DESC ] ]
[ LIMIT positive_integer ]
[ PARAMETERS param_list ]
field_list = field_name { , field_name }
condition_list = condition { AND condition }
condition = field_name operator value
param_list = param_name = param_value { , param_name = param_value }
子句
| 子句 | 必需 | 说明 |
|---|
SELECT | 是 | 要返回的字段(资源字段、指标、细分) |
FROM | 是 | 要查询的单个资源类型 |
WHERE | 否 | 使用 AND 连接的筛选条件(不支持 OR) |
ORDER BY | 否 | 按一个字段排序,使用 ASC 或 DESC |
LIMIT | 否 | 要返回的最大行数 |
PARAMETERS | 否 | 查询级参数(例如,include_drafts = true) |
示例
SELECT
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros
FROM campaign
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 50
资源类型(FROM 子句)
广告系列管理
| 资源 | 说明 |
|---|
campaign | 广告系列设置、状态、出价和预算 |
campaign_budget | 共享预算和广告系列级预算 |
campaign_criterion | 广告系列级定位条件 |
campaign_bid_modifier | 广告系列级出价调整 |
bidding_strategy | 组合出价策略 |
广告组和广告
| 资源 | 说明 |
|---|
ad_group | 广告组设置、状态和定位 |
ad_group_ad | 广告组中的广告(RSA、ETA 等) |
ad_group_ad_asset_view | 自适应广告的素材级效果 |
ad_group_criterion | 关键字、受众及其他条件 |
ad_group_bid_modifier | 广告组级出价调整 |
效果视图
| 资源 | 说明 |
|---|
keyword_view | 关键字级效果指标 |
search_term_view | 触发广告的实际搜索查询 |
landing_page_view | 着陆页效果 |
geographic_view | 按地理位置划分的效果 |
location_view | 按定位位置或排除位置划分的效果 |
age_range_view | 按年龄段人口统计信息划分的效果 |
gender_view | 按性别人口统计信息划分的效果 |
user_location_view | 按用户实际位置划分的效果 |
display_keyword_view | 展示广告网络关键字效果 |
topic_view | 展示广告和视频主题定位效果 |
managed_placement_view | 托管版位效果 |
转化和归因
| 资源 | 说明 |
|---|
conversion_action | 转化操作配置 |
customer_conversion_goal | 转化目标和优化设置 |
账号和附加信息
| 资源 | 说明 |
|---|
customer | 账号级设置 |
asset | 账号素材(附加链接、宣传信息、图片) |
asset_group | Performance Max 素材组 |
asset_group_asset | 素材组中的素材 |
更改历史记录
| 资源 | 说明 |
|---|
change_status | 账号实体的近期更改 |
change_event | 包含旧值和新值的详细更改历史记录 |
常见字段
广告系列字段
| Field | Type | Description |
|---|
campaign.id | INT64 | 唯一广告系列 ID |
campaign.name | STRING | 广告系列名称 |
campaign.status | ENUM | ENABLED、PAUSED、REMOVED |
campaign.advertising_channel_type | ENUM | SEARCH、DISPLAY、SHOPPING、VIDEO、PERFORMANCE_MAX |
campaign.bidding_strategy_type | ENUM | TARGET_CPA、TARGET_ROAS、MAXIMIZE_CONVERSIONS、MANUAL_CPC 等 |
campaign.campaign_budget | RESOURCE | 预算资源名称 |
campaign.start_date | DATE | 广告系列开始日期 |
campaign.end_date | DATE | 广告系列结束日期 |
campaign.serving_status | ENUM | SERVING、NONE、ENDED、PENDING、SUSPENDED |
campaign.target_cpa.target_cpa_micros | INT64 | 以微单位表示的目标 CPA |
campaign.target_roas.target_roas | DOUBLE | 以比率表示的目标 ROAS |
广告组字段
| Field | Type | Description |
|---|
ad_group.id | INT64 | 唯一广告组 ID |
ad_group.name | STRING | 广告组名称 |
ad_group.status | ENUM | ENABLED、PAUSED、REMOVED |
ad_group.type | ENUM | SEARCH_STANDARD、DISPLAY_STANDARD、SHOPPING_PRODUCT_ADS 等 |
ad_group.cpc_bid_micros | INT64 | 以微单位表示的默认 CPC 出价 |
ad_group.target_cpa_micros | INT64 | 广告组级别的目标 CPA |
广告字段
| Field | Type | Description |
|---|
ad_group_ad.ad.id | INT64 | 唯一广告 ID |
ad_group_ad.ad.type | ENUM | RESPONSIVE_SEARCH_AD、EXPANDED_TEXT_AD 等 |
ad_group_ad.ad.final_urls | STRING (repeated) | 落地页 URL |
ad_group_ad.status | ENUM | ENABLED、PAUSED、REMOVED |
ad_group_ad.ad.responsive_search_ad.headlines | MESSAGE (repeated) | RSA 标题素材 |
ad_group_ad.ad.responsive_search_ad.descriptions | MESSAGE (repeated) | RSA 描述素材 |
ad_group_ad.policy_summary.approval_status | ENUM | APPROVED、DISAPPROVED 等 |
关键字和条件字段
| Field | Type | Description |
|---|
ad_group_criterion.criterion_id | INT64 | 条件 ID |
ad_group_criterion.keyword.text | STRING | 关键字文本 |
ad_group_criterion.keyword.match_type | ENUM | BROAD、PHRASE、EXACT |
ad_group_criterion.status | ENUM | ENABLED、PAUSED、REMOVED |
ad_group_criterion.quality_info.quality_score | INT32 | 质量得分(1-10) |
ad_group_criterion.quality_info.creative_quality_score | ENUM | BELOW_AVERAGE、AVERAGE、ABOVE_AVERAGE |
ad_group_criterion.quality_info.post_click_quality_score | ENUM | 落地页体验 |
ad_group_criterion.quality_info.search_predicted_ctr | ENUM | 预期 CTR |
ad_group_criterion.effective_cpc_bid_micros | INT64 | 有效 CPC 出价 |
ad_group_criterion.position_estimates.first_page_cpc_micros | INT64 | 预估首页 CPC |
搜索词字段
| Field | Type | Description |
|---|
search_term_view.search_term | STRING | 用户实际搜索查询 |
search_term_view.status | ENUM | ADDED、EXCLUDED、ADDED_EXCLUDED、NONE |
指标
| 字段 | 类型 | 描述 |
|---|
metrics.impressions | INT64 | 展示次数 |
metrics.clicks | INT64 | 点击次数 |
metrics.cost_micros | INT64 | 费用,单位为微(除以 1,000,000) |
metrics.ctr | DOUBLE | 点击率 |
metrics.average_cpc | DOUBLE | 平均 CPC,单位为微 |
metrics.average_cpm | DOUBLE | 平均 CPM,单位为微 |
metrics.conversions | DOUBLE | 转化次数 |
metrics.conversions_value | DOUBLE | 转化总价值 |
metrics.cost_per_conversion | DOUBLE | 单次转化费用,单位为微 |
metrics.all_conversions | DOUBLE | 所有转化次数(包括跨设备转化) |
metrics.all_conversions_value | DOUBLE | 所有转化价值 |
metrics.view_through_conversions | INT64 | 浏览后转化次数 |
metrics.search_impression_share | DOUBLE | 搜索展示份额(0.0-1.0) |
metrics.search_top_impression_share | DOUBLE | 顶部展示份额 |
metrics.search_absolute_top_impression_share | DOUBLE | 绝对顶部展示份额 |
metrics.search_budget_lost_impression_share | DOUBLE | 因预算损失的展示份额 |
metrics.search_rank_lost_impression_share | DOUBLE | 因排名损失的展示份额 |
metrics.interaction_rate | DOUBLE | 互动率 |
metrics.interactions | INT64 | 互动次数 |
metrics.video_views | INT64 | 视频观看次数 |
metrics.video_view_rate | DOUBLE | 视频观看率 |
metrics.invalid_clicks | INT64 | Google 过滤的无效点击次数 |
细分
| 字段 | 类型 | 描述 |
|---|
segments.date | DATE | 日期(YYYY-MM-DD) |
segments.day_of_week | ENUM | 从 MONDAY 到 SUNDAY |
segments.month | DATE | 月份的第一天 |
segments.quarter | DATE | 季度的第一天 |
segments.year | INT32 | 年份 |
segments.hour | INT32 | 一天中的小时(0-23) |
segments.device | ENUM | DESKTOP、MOBILE、TABLET、OTHER |
segments.ad_network_type | ENUM | SEARCH、SEARCH_PARTNERS、CONTENT、YOUTUBE_SEARCH、YOUTUBE_WATCH |
segments.slot | ENUM | TOP、OTHER |
segments.conversion_action | RESOURCE | 转化操作资源名称 |
segments.conversion_action_name | STRING | 转化操作名称 |
segments.conversion_action_category | ENUM | 转化操作类别 |
segments.click_type | ENUM | URL_CLICKS、CALLS、SITELINKS 等 |
segments.keyword.info.text | STRING | 关键字文本(在 search_term_view 中) |
segments.keyword.info.match_type | ENUM | 关键字匹配类型 |
WHERE 子句运算符
比较运算符
| 运算符 | 示例 |
|---|
= | campaign.status = 'ENABLED' |
!= | campaign.status != 'REMOVED' |
> | metrics.impressions > 100 |
< | metrics.ctr < 0.02 |
>= | metrics.clicks >= 10 |
<= | metrics.cost_micros <= 5000000 |
集合运算符
| 运算符 | 示例 |
|---|
IN | campaign.status IN ('ENABLED', 'PAUSED') |
NOT IN | campaign.advertising_channel_type NOT IN ('VIDEO', 'DISPLAY') |
CONTAINS ANY | campaign.labels CONTAINS ANY ('customers/123/labels/456') |
CONTAINS ALL | campaign.labels CONTAINS ALL ('..label1..', '..label2..') |
CONTAINS NONE | campaign.labels CONTAINS NONE ('customers/123/labels/456') |
字符串运算符
| 运算符 | 示例 |
|---|
LIKE | campaign.name LIKE '%Brand%' |
NOT LIKE | campaign.name NOT LIKE '%Test%' |
空值检查
| 运算符 | 示例 |
|---|
IS NULL | ad_group_criterion.quality_info.quality_score IS NULL |
IS NOT NULL | ad_group_criterion.quality_info.quality_score IS NOT NULL |
范围运算符
| 运算符 | 示例 |
|---|
BETWEEN | segments.date BETWEEN '2025-01-01' AND '2025-01-31' |
DURING | segments.date DURING LAST_30_DAYS |
日期宏(DURING)
| 宏 | 说明 |
|---|
TODAY | 仅今天 |
YESTERDAY | 仅昨天 |
LAST_7_DAYS | 过去 7 天(不包括今天) |
LAST_14_DAYS | 过去 14 天 |
LAST_30_DAYS | 过去 30 天 |
LAST_BUSINESS_WEEK | 上周周一至周五 |
THIS_WEEK_MON_TODAY | 本周周一至今天 |
THIS_WEEK_SUN_TODAY | 本周周日至今天 |
THIS_MONTH | 本月第一天至今天 |
LAST_MONTH | 上一个完整月份 |
常见查询模式
广告系列效果报告
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type,
campaign.bidding_strategy_type,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value,
metrics.cost_per_conversion
FROM campaign
WHERE campaign.status != 'REMOVED'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
搜索字词报告(识别否定关键字)
SELECT
search_term_view.search_term,
search_term_view.status,
segments.keyword.info.text,
segments.keyword.info.match_type,
campaign.name,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM search_term_view
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
AND metrics.impressions > 10
ORDER BY metrics.cost_micros DESC
LIMIT 1000
筛选费用高但零转化的字词,以建立否定关键字列表。
质量得分分析
SELECT
campaign.name,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.search_predicted_ctr,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM keyword_view
WHERE campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND ad_group_criterion.status = 'ENABLED'
AND ad_group_criterion.quality_info.quality_score IS NOT NULL
AND segments.date DURING LAST_30_DAYS
ORDER BY ad_group_criterion.quality_info.quality_score ASC
着陆页效果
SELECT
landing_page_view.unexpanded_final_url,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM landing_page_view
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
AND metrics.clicks > 0
ORDER BY metrics.clicks DESC
LIMIT 100
设备细分
SELECT
campaign.name,
segments.device,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM campaign
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.name, segments.device
地理位置效果
SELECT
geographic_view.country_criterion_id,
geographic_view.location_type,
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value,
metrics.cost_per_conversion
FROM geographic_view
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
AND metrics.impressions > 0
ORDER BY metrics.cost_micros DESC
LIMIT 200
广告文案效果(RSA 素材级别)
SELECT
campaign.name,
ad_group.name,
ad_group_ad.ad.id,
ad_group_ad.ad.responsive_search_ad.headlines,
ad_group_ad.ad.responsive_search_ad.descriptions,
ad_group_ad.ad.final_urls,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions
FROM ad_group_ad
WHERE campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND ad_group_ad.status = 'ENABLED'
AND ad_group_ad.ad.type = 'RESPONSIVE_SEARCH_AD'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
素材级别的效果:
SELECT
campaign.name,
ad_group.name,
ad_group_ad_asset_view.field_type,
ad_group_ad_asset_view.performance_label,
asset.text_asset.text,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions
FROM ad_group_ad_asset_view
WHERE campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY ad_group_ad_asset_view.performance_label DESC, metrics.impressions DESC
预算利用率/展示份额
SELECT
campaign.name,
campaign.campaign_budget,
campaign_budget.amount_micros,
campaign.bidding_strategy_type,
metrics.impressions,
metrics.cost_micros,
metrics.search_impression_share,
metrics.search_top_impression_share,
metrics.search_absolute_top_impression_share,
metrics.search_budget_lost_impression_share,
metrics.search_rank_lost_impression_share
FROM campaign
WHERE campaign.status = 'ENABLED'
AND campaign.advertising_channel_type = 'SEARCH'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.search_budget_lost_impression_share DESC
转化操作细分
SELECT
campaign.name,
segments.conversion_action_name,
segments.conversion_action_category,
metrics.conversions,
metrics.conversions_value,
metrics.all_conversions,
metrics.all_conversions_value,
metrics.cost_per_conversion
FROM campaign
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
AND metrics.conversions > 0
ORDER BY metrics.conversions DESC
更改历史审核
SELECT
change_event.change_date_time,
change_event.change_resource_type,
change_event.change_resource_name,
change_event.resource_change_operation,
change_event.changed_fields,
change_event.old_resource,
change_event.new_resource,
change_event.user_email
FROM change_event
WHERE change_event.change_date_time DURING LAST_14_DAYS
AND change_event.change_resource_type IN (
'CAMPAIGN', 'AD_GROUP', 'AD_GROUP_AD',
'AD_GROUP_CRITERION', 'CAMPAIGN_BUDGET'
)
ORDER BY change_event.change_date_time DESC
LIMIT 500
注意事项
cost_micros 需要除法换算
所有费用字段的单位均为 micros(货币单位的 1/1,000,000):
Actual cost = metrics.cost_micros / 1,000,000
Actual CPC = metrics.average_cpc / 1,000,000
例如:cost_micros = 5430000 表示 $5.43。
细分与指标的兼容性
segments.conversion_action — 展示次数/点击次数会在每个转化操作行中重复出现。请勿将它们相加。
segments.click_type — 点击次数和展示次数会按点击类型拆分。求和会导致重复计数。
segments.slot — 仅适用于搜索广告系列。
segments.hour — 对于某些资源,不能与 segments.date 组合使用。
- 不确定时,请查看 Google Ads API 字段兼容性矩阵。
日期范围要求
- 含有
metrics.* 字段的查询需要指定日期范围(segments.date DURING ... 或 BETWEEN)。
- 仅查询资源(不含指标)时无需指定日期范围。
枚举值
枚举字段必须使用字符串常量名称:
- CampaignStatus:
ENABLED、PAUSED、REMOVED
- AdGroupStatus:
ENABLED、PAUSED、REMOVED
- AdvertisingChannelType:
SEARCH、DISPLAY、SHOPPING、VIDEO、PERFORMANCE_MAX、MULTI_CHANNEL、LOCAL、SMART、HOTEL、DISCOVERY
- KeywordMatchType:
BROAD、PHRASE、EXACT
- BiddingStrategyType:
TARGET_CPA、TARGET_ROAS、MAXIMIZE_CONVERSIONS、MAXIMIZE_CONVERSION_VALUE、MANUAL_CPC、ENHANCED_CPC、TARGET_IMPRESSION_SHARE
- Device:
DESKTOP、MOBILE、TABLET、CONNECTED_TV、OTHER
- QualityScoreBucket:
BELOW_AVERAGE、AVERAGE、ABOVE_AVERAGE
速率限制
- 标准访问权限: 每天 15,000 个请求,每分钟 1,600 个操作。
- 基础访问权限: 每天 10,000 个请求。
- 对于大型结果集,请使用
SearchStream(无论结果集大小如何,都只计为一个操作)。
其他注意事项
- 不支持
OR: 所有 WHERE 条件均以 AND 连接。请使用 IN 或分别执行查询。
- 不支持连接: GAQL 查询仅针对单个资源运行。
- 不支持
GROUP BY: 聚合由所选字段和细分隐式完成。
- 不支持别名: GAQL 中不能使用
AS。
- 不支持算术运算: 请在客户端计算
cost_micros / 1000000。
- 细分自动分组: 添加细分会按该维度拆分行。
- 已移除的资源: 默认排除。若要包含,请显式添加筛选条件。
- PARAMETERS 子句: 草稿使用
include_drafts = true;使用 omit_unselected_resource_names = true 可缩小响应大小。
资源