ゼロ指標

このガイドでは、Google Ads API レポートに指標がゼロの行が表示される理由と、クエリでそれらの行を除外または処理する方法について説明します。

検索結果の指標がゼロ

クエリを実行すると、エンティティの指標がゼロになることがあります。これには、以下のような理由が考えられます。

  • エンティティが表示対象外
  • レポートの期間内に一時停止された。

クエリ結果では、キャンペーンの掲載結果に関する情報を取得したいと思うでしょう。このコンテキストでは、ゼロ指標は望ましくない場合があります。より有用なレポートを作成するには、ゼロ指標を明示的に除外します。

述語を使用してゼロ指標を除外する

述語は、TRUE、FALSE、UNKNOWN のいずれかに評価される式です。述語は、Google 広告クエリ言語の WHERE 句の検索条件で使用されます。

次のクエリは、述語を使用してゼロ指標を明示的に削除する方法を示しています。

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

セグメント化によってゼロ指標を除外する

レポートを分割する際、選択した指標がすべてゼロの場合、ゼロ指標は常に除外されます(ゼロ指標を含む行が返されるをご覧ください)。

レポートを分割するには、検索クエリの SELECT 句に segments フィールドを含めます(SELECT で選択せずに WHERE のコア日付セグメントでフィルタしても、レポートは分割されません)。たとえば、レポートを segments.date で分割すると、指標は日付ごとに 1 行ずつ表示されます。このようなレポートでは、指標のない日付は返されません。

次のクエリの場合、レポートには指標がゼロの行は含まれません。

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'

生成されるレポートには、選択した 3 つの指標がすべてゼロである行は含まれませんが、選択した 3 つの指標のうち少なくとも 1 つがゼロより大きい行は返されます。

データ保持期間を超える過去のデータをクエリする場合、37 か月を超える詳細なデータは利用できず、行は返されません。37 か月より前の範囲をカバーする詳細な日付セグメント(segments.date、segments.week、segments.hour)のリクエストは、v24 以降では 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 広告クエリ言語(GAQL)では、コンパニオン リーチ フィールドは SELECT 句で直接選択された MESSAGE 指標です(例: metrics.unique_users_info)。SELECT 句に .reach_metric_states を追加しないでください。GAQL でネストされたメッセージ フィールドを選択すると、UNRECOGNIZED_FIELD で失敗します。代わりに、metrics.unique_users_info を選択すると、ReachMetricState 型の繰り返し列挙型フィールド reach_metric_states を含む ReachMetricInfo メッセージが返されます。このフィールドは、指標が抑制されたか、完了したかを示します。

リーチ指標が抑制されているか、保持期間(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