零指标

本指南介绍了为什么 Google Ads API 报告中会出现指标为零的行,以及如何在查询中排除或处理这些行。

搜索结果中的零指标

执行查询时,您可能会遇到实体指标为零的情况。可能的原因如下:

  • 这些实体不符合展示条件。
  • 它们在报告的日期范围内处于暂停状态。

您往往需要通过查询结果获取有关广告系列效果的信息。在这种情况下,零指标可能不理想。如需生成更有用的报告,您可以明确排除零指标。

使用谓词排除零指标

谓词是求值结果为 TRUE、FALSE 或 UNKNOWN 的表达式。谓词用于 Google Ads 查询语言中 WHERE 子句的搜索条件。

以下查询演示了如何使用谓词明确移除零指标:

SELECT
  campaign.id,
  metrics.impressions
FROM campaign
WHERE metrics.impressions > 0

通过细分排除零指标

在对报告进行细分时,如果所有所选指标均为零,则系统始终会排除零指标(请参阅返回的零指标行)。

如需对报告进行细分,请在搜索查询的 SELECT 子句中添加任意 segments 字段(在 WHERE 中对核心日期细分进行过滤,而不选择 SELECT 中的字段,则不会对报告进行细分)。例如,如果您按segments.date细分报告,则指标会按日期细分,每个日期对应一行。此类报告不会返回没有指标的日期。

对于以下查询,报告不会包含指标值为零的行:

SELECT
  campaign.name,
  metrics.impressions,
  segments.date
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

返回的指标为零的行数

细分时,系统不会返回所选指标全部为零的行。例如,请考虑以下选择 metrics.impressions、metrics.clicks 和 metrics.conversions 的查询:

SELECT
  ad_group_criterion.criterion_id,
  metrics.impressions,
  metrics.clicks,
  metrics.conversions,
  segments.date
FROM keyword_view
WHERE segments.date BETWEEN '2026-01-01' AND '2026-01-31'

生成的报告不会包含三个所选指标均为零的任何行,但会返回三个所选指标中至少有一个大于零的行。

查询超出数据保留期限的历史数据时,系统无法提供 37 个月以前的细粒度数据,也不会返回任何行。在 v24 及更高版本中,如果请求的细粒度日期细分(segments.date、segments.week 和 segments.hour)涵盖 37 个月之前的范围,则会返回 DateRangeError.REQUESTED_DATE_GRANULARITY_NOT_SUPPORTED(在 v23 中则会返回 DateRangeError.UNKNOWN)。高级别汇总数据(segments.month、segments.quarter 和 segments.year)会保留 11 年,从下一个完整日历周期开始计算。例如,如果 11 年回溯截止日期为 2015-03-22(或 2015-03-01),则月度数据从截止日期后的第一个完整日历月 (2015-04-01) 开始提供。如需了解详情,请参阅日期范围。

覆盖面指标隐藏和零值

除了未投放展示的实体之外,当覆盖面数据被抑制时,覆盖面指标(例如 metrics.unique_users 和频次分桶指标 metrics.unique_users_two_plus 到 metrics.unique_users_ten_plus)也可能会显示为零或被省略。展示广告系列、视频广告系列、需求开发广告系列和应用广告系列支持 metrics.unique_users 指标(和 metrics.unique_users_info),而 metrics.unique_users_*_plus 频次分段指标(和 metrics.unique_users_*_plus_info)适用于视频广告系列。

覆盖面抑制可能由多种原因导致:

  • 隐私权阈值:当用户数量未达到隐私权阈值(例如 k-匿名性)时,系统会隐藏覆盖面数据,以保护用户身份。
  • 质量阈值:如果数据不符合质量标准,系统可能会扣留覆盖面数据。
  • 数据保留:历史覆盖面数据会保留 3 年(36 个月)。如果查询的时间范围超出 3 年的保留期,则无法返回覆盖面指标。虽然涵盖 36 到 37 个月前日期的查询会成功,而不会返回上一部分中介绍的 DateRangeError.REQUESTED_DATE_GRANULARITY_NOT_SUPPORTED,但它们会省略覆盖面指标(并在选择随播广告覆盖面元数据时返回 DATE_RANGE_BEYOND_RETENTION)。

在 v26 及更高版本中,每个唯一身份用户覆盖面指标都有一个类型为 ReachMetricInfo 的配套元数据字段(例如 metrics.unique_users_info 以及 metrics.unique_users_two_plus_info 到 metrics.unique_users_ten_plus_info)。

在 Google Ads 查询语言 (GAQL) 中,随播广告覆盖面字段是直接在 SELECT 子句中选择的 MESSAGE 指标(例如 metrics.unique_users_info)。请勿在 SELECT 子句中附加 .reach_metric_states,因为在 GAQL 中选择嵌套消息字段会失败,并显示 UNRECOGNIZED_FIELD。相反,选择 metrics.unique_users_info 会返回一个 ReachMetricInfo 消息,其中包含类型为 ReachMetricState 的重复枚举字段 reach_metric_states,该字段描述指标是被抑制还是完整。

每当覆盖面指标被抑制或超出保留期限(PRIVACY_SUPPRESSION、QUALITY_SUPPRESSION 或 DATE_RANGE_BEYOND_RETENTION)时,Metrics 上的 optional int64 字段便会取消设置(如果未检查字段是否存在,则评估为 0),而 LOW_QUALITY 仍会填充数值指标:

  • COMPLETE:覆盖面指标数据完整,未进行抑制。
  • PRIVACY_SUPPRESSION:由于隐私限制,覆盖面数据已被抑制。
  • QUALITY_SUPPRESSION:由于数据质量原因,覆盖面数据被屏蔽。
  • LOW_QUALITY:覆盖面指标已计算,但被标记为质量较低。
  • DATE_RANGE_BEYOND_RETENTION:由于日期范围超出了覆盖面数据的 3 年数据保留期限,因此无法查看覆盖面指标。

通过同时选择覆盖面指标及其配套元数据字段,您的应用可以区分真正的零覆盖面和被抑制的覆盖面值:

SELECT
  campaign.id,
  campaign.name,
  metrics.unique_users,
  metrics.unique_users_info,
  metrics.unique_users_two_plus,
  metrics.unique_users_two_plus_info,
  metrics.unique_users_ten_plus,
  metrics.unique_users_ten_plus_info
FROM campaign
WHERE campaign.advertising_channel_type = 'VIDEO'
  AND segments.date DURING LAST_30_DAYS