修改广告系列名称后,如何清除BigQuery导出中的重复Campaign ID?
解决BigQuery广告资产名称变更导致指标重复的方案
核心思路
问题根源是Google Ads的BigQuery导出采用每日快照存储,资产名称变更会生成新行但ID保持不变。解决重点是按ID聚合指标的同时,绑定该ID对应的最新名称,避免因名称变动导致的重复统计。
具体实现方法
1. BigQuery层预处理(推荐)
通过创建视图或物化视图统一数据逻辑,从源头解决重复问题:
- 第一步:提取每个资产ID的最新名称
WITH latest_campaigns AS ( SELECT campaign_id, campaign_name, MAX(_PARTITIONTIME) AS latest_update_time FROM `your-project.your-dataset.google_ads_campaigns` GROUP BY campaign_id, campaign_name QUALIFY ROW_NUMBER() OVER (PARTITION BY campaign_id ORDER BY latest_update_time DESC) = 1 ), latest_adgroups AS ( SELECT ad_group_id, ad_group_name, MAX(_PARTITIONTIME) AS latest_update_time FROM `your-project.your-dataset.google_ads_ad_groups` GROUP BY ad_group_id, ad_group_name QUALIFY ROW_NUMBER() OVER (PARTITION BY ad_group_id ORDER BY latest_update_time DESC) = 1 )
- 第二步:关联指标表,用最新名称替换并聚合数据
SELECT lc.campaign_name, lag.ad_group_name, SUM(metrics.impressions) AS total_impressions, SUM(metrics.clicks) AS total_clicks, DATE_TRUNC(_PARTITIONTIME, MONTH) AS report_month FROM `your-project.your-dataset.google_ads_performance` pr LEFT JOIN latest_campaigns lc ON pr.campaign_id = lc.campaign_id LEFT JOIN latest_adgroups lag ON pr.ad_group_id = lag.ad_group_id GROUP BY lc.campaign_name, lag.ad_group_name, report_month
2. Power BI端直接处理
若无法修改BigQuery配置,可在Power BI内完成数据清理:
- 导入数据后,按
campaign_id/ad_group_id分组,用「最新日期对应的名称」作为该ID的统一名称(可通过添加计算列或分组依据实现) - 以「ID+最新名称」为维度,聚合展示量、点击量等指标,避免按变动后的名称重复统计
- 注意:需同步筛选日期范围,确保名称取数的时效性
3. 团队操作规范(预防方案)
- 要求修改资产名称时,在名称后添加版本标识(如
[V2]),保留原ID不变,既区分新旧名称,又不影响指标聚合 - 建立名称变更同步机制,修改后及时更新报表层的名称映射逻辑
内容的提问来源于stack exchange,提问作者Marhis
相关产品推荐
相关产品推荐

