You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中GeoStats与CampaignStats报告数据不符问题排查请求

可能的原因

  • 地理位置匹配限制:GeoStats仅统计能精准匹配到具体地区的流量,而CampaignStats包含所有流量——包括那些无法识别地区的(比如IP解析失败、用户隐私设置隐藏位置等)。Google Ads后台会把无地区归属的流量自动归到“未知”分组,所以后台看两者数据一致;但BigQuery导出的GeoStats默认可能不包含这部分“未知”数据,导致总量比CampaignStats低。
  • 导出过滤规则不一致:检查BigQuery导出的GeoStats是否带有默认过滤条件,比如只导出了目标投放地区的数据,而CampaignStats是全量统计所有来源地区的流量。比如广告投放了美国,但有少量流量来自加拿大,CampaignStats会统计这部分,但GeoStats如果被设置为只导出美国地区,就会少这部分数据。
  • 时间维度或同步延迟:虽然AdGroupStats和CampaignStats数据匹配,但GeoStats的同步可能存在延迟,或者两者的时间统计维度不一致——比如CampaignStats用“点击时间”,GeoStats用“展示时间”,导致相同时间窗口内的统计范围错位。
  • 维度拆解的数据丢失:按地区维度拆解时,部分数据因为归因冲突或系统限制无法分配到具体地区,这部分数据不会进入GeoStats,但会被CampaignStats汇总。比如跨地区的转化归因、自动出价策略下的模糊流量等。

解决方法

  • 手动补充未知地区数据:在BigQuery中通过SQL关联两张表,把CampaignStats减去GeoStats的差值作为“未知地区”分组补充进去,示例SQL:
    WITH campaign_totals AS (
      SELECT 
        campaign_id,
        SUM(clicks) AS total_clicks,
        SUM(impressions) AS total_impressions,
        SUM(cost) AS total_cost
      FROM `your-project.your-dataset.CampaignStats`
      GROUP BY campaign_id
    ), geo_details AS (
      SELECT 
        campaign_id,
        geo_target_id,
        SUM(clicks) AS geo_clicks,
        SUM(impressions) AS geo_impressions,
        SUM(cost) AS geo_cost
      FROM `your-project.your-dataset.GeoStats`
      GROUP BY campaign_id, geo_target_id
    )
    SELECT 
      ct.campaign_id,
      COALESCE(gd.geo_target_id, 'UNKNOWN') AS geo_target_id,
      -- 计算未知地区的点击量
      CASE 
        WHEN gd.geo_target_id IS NULL THEN ct.total_clicks - COALESCE(SUM(gd.geo_clicks) OVER (PARTITION BY ct.campaign_id), 0)
        ELSE gd.geo_clicks 
      END AS clicks,
      -- 计算未知地区的展示量
      CASE 
        WHEN gd.geo_target_id IS NULL THEN ct.total_impressions - COALESCE(SUM(gd.geo_impressions) OVER (PARTITION BY ct.campaign_id), 0)
        ELSE gd.geo_impressions 
      END AS impressions,
      -- 计算未知地区的成本
      CASE 
        WHEN gd.geo_target_id IS NULL THEN ct.total_cost - COALESCE(SUM(gd.geo_cost) OVER (PARTITION BY ct.campaign_id), 0)
        ELSE gd.geo_cost 
      END AS cost
    FROM campaign_totals ct
    LEFT JOIN geo_details gd ON ct.campaign_id = gd.campaign_id
    
  • 对齐导出规则和时间范围:确保GeoStats和CampaignStats的导出时间范围完全一致,且时间统计维度(点击/展示时间)相同。检查BigQuery导出的GeoStats是否包含所有geo_target_id,包括后台显示的“未知”或“其他”分组。
  • 核对后台Geo视图设置:在Google Ads后台打开地区报告,确认是否勾选了“包含未知地区”选项,然后对比BigQuery导出的GeoStats是否包含这部分数据。如果后台是合并了未知地区的总量,而BigQuery是拆分后的明细,就需要手动合并。
  • 验证归因模型一致性:如果使用了跨设备/跨地区归因,检查GeoStats和CampaignStats的归因规则是否一致。比如CampaignStats用最后点击归因,GeoStats用首次点击,就会导致数据差异。可以在后台调整归因模型后重新导出数据对比。

内容的提问来源于stack exchange,提问作者AnaKeen94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:00:48