Google BigQuery Google Ads 数据传输表中的重复数据

Posted

技术标签:

【中文标题】Google BigQuery Google Ads 数据传输表中的重复数据【英文标题】:Duplicated data in Google BigQuery Google Ads Data Transfer Tables 【发布时间】:2021-12-09 08:17:24 【问题描述】:

我已将 Google Ads 数据传输流从 Google Ads 配置到我的 GoogleBigQuery 项目。它运行,数据流动,一切都很好。但是,当我决定构建一个查询以返回在 utm_marks(来源、媒介、活动)的不同组合的上下文中花费的金额时,我遇到了“重复”数据的问题。

因此,查询首先转到 Adstat 表并获取每个广告系列 ID 中每个 creativeId(我想 creativeId 表示广告)的统计信息。然后,它从每个广告系列的每个 creativeId 的 AdTrackingUrlTemplate 中获取每个 utm_marks。最后,它将两个表合并为一个,在输出中我有关于每个 utm_mark 统计信息的完整信息。

查询如下所示:

 with 
 Adstat as (
            select * 
            from `myproject.GoogleAds.AdStats_7394379271`
        ),

 Ad as (
        select 
            CampaignId, 
            CreativeId, 
            REGEXP_EXTRACT(CreativeTrackingUrlTemplate, r"[?&]utm_source=([^&]+)") as source,
            REGEXP_EXTRACT(CreativeTrackingUrlTemplate, r"[?&]utm_medium=([^&]+)") as medium,
            REGEXP_EXTRACT(CreativeTrackingUrlTemplate, r"[?&]utm_campaign=([^&]+)") as campaign
        from 
            `myproject.GoogleAds.p_Ad_7394379271`
        where 
            CreativeTrackingUrlTemplate is not null 
        and 
            CreativeTrackingUrlTemplate!="lpurl"
        group by 
            CampaignId, CreativeId, source, medium, campaign
       )

select
    date, CampaignId, CreativeId, impressions, 
    Clicks, Cost, Cost * 1.2/1000000 as adCost, source, medium, campaign
from 
    Adstat 
left join  
    Ad using (CampaignId, CreativeId)
where 
    date = '2021-11-26'
and 
    CampaignId = 1688777252
and 
    CreativeId = 328994634699

输出:

date CampaignId CreativeId impressions Clicks adCost source medium campaign
2021-11-26 1688777252 328994634699 1 1 10 google cpc _cntr_sale_15
2021-11-26 1688777252 328994634699 1 1 10 google cpc cntr_sale_16
2021-11-26 1688777252 328994634699 1 1 10 google cpc cntr_sale_17

还有一个麻烦。如果一个 creativeId 在其生命周期中在 AdTrakingTemplate 中有几个 utm_marks,所有这些都将进入结果,并且所有这些都会从 AdStats 表中收到一个统计信息(您可以在输出中看到:相同的日期,相同的 CreativeAd,相同的统计信息,但不同乌兹别克斯坦)。因此,我们有双倍(三倍、四倍)的展示次数、点击次数、支出金额等。这是一个很常见的情况,因为经理更改跟踪模板比在 Google Ads 中创建新的广告或广告系列更容易。

而且,不幸的是,我不知道如何解决这个问题,因为在执行某些统计操作(展示次数、点击等)时,无法确定 createiveIdTrakingTemplate 中究竟有哪些 utm_marks。

有谁知道,怎么处理?感谢您的帮助!

【问题讨论】:

据我所知,(CampaignId, CreativeId) 不是Adstat 表上的候选键,因此即使您不进行连接,您也可能会有多行。原因是表格被分割的还有其他维度,例如Device 【参考方案1】:

您假设 CreativeId 是唯一的。事实并非如此。 CreativeId 仅在广告组中是唯一的 - 换句话说,一个广告系列可以有多个广告组,并且这些组可以有一个具有相同 CreativeId 的广告。

要解决这个问题,请确保在结果中提及广告组,这应该有助于您理解结果。

有关 Google Ads 中对象的唯一性的信息: https://developers.google.com/adwords/api/docs/guides/objects-methods#object_id_uniqueness

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于Google BigQuery Google Ads 数据传输表中的重复数据的主要内容,如果未能解决你的问题,请参考以下文章

com.google.cloud.bigquery.BigQueryException:读取超时

在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格

Google 数据准备 - 无法从 BigQuery 导入表(从 Google 表格创建)“未找到”

Google BigQuery - 将数据流式传输到 BigQuery

使用命令行将数据从 BigQuery 加载到 Google 表格中

将 Firebase Google Analytic 数据导入 BigQuery 时,Google 是不是会收取流媒体费用?