AWQL:在 PRODUCT_PARTITION_REPORT 中包含设备类型会导致更少的零展示数据?

Posted

技术标签:

【中文标题】AWQL:在 PRODUCT_PARTITION_REPORT 中包含设备类型会导致更少的零展示数据?【英文标题】:AWQL: Including device type in PRODUCT_PARTITION_REPORT results in less zero impression data? 【发布时间】:2015-12-08 12:34:34 【问题描述】:

我在 PRODUCT_PARTITION_REPORT 中发现了一些差异。

所以在我发布我的测试脚本并给出一些解释之前,我想问我的问题:

为什么 AdWords 会这样? 这种行为是正常的还是错误?

这是我用 Python 编写的小测试脚本,用于通过 AWQL 查询 AdWords 购物数据(产品组)并将结果存储为 CSV:

from googleads import AdWordsClient

startdate = '20150801'
enddate = '20151130'
ADWORDS_API_VERSION = 'v201509'

client = AdWordsClient.LoadFromStorage('adwords.yaml')
client.client_customer_id = 'XXX-XXX-XXXX'
report_downloader = client.GetReportDownloader(version=ADWORDS_API_VERSION)

queries = 
    # (1) 
    'product_groups_without_device_split': (
        "SELECT CampaignName, CampaignId, AdGroupName, AdGroupId, "
        "ProductGroup, Impressions, Clicks, Conversions "
        "FROM PRODUCT_PARTITION_REPORT "
        "WHERE CampaignStatus IN ['ENABLED', 'PAUSED'] "
        "AND AdGroupStatus IN ['ENABLED', 'PAUSED'] "
        "AND PartitionType = UNIT AND Impressions > 0 "
        "DURING %s,%s"
    ),
    # (2) 
    'product_groups_without_device_split_zero_impressions': (
        "SELECT CampaignName, CampaignId, AdGroupName, AdGroupId, "
        "ProductGroup "
        "FROM PRODUCT_PARTITION_REPORT "
        "WHERE CampaignStatus IN ['ENABLED', 'PAUSED'] "
        "AND AdGroupStatus IN ['ENABLED', 'PAUSED'] "
        "AND PartitionType = UNIT AND Impressions = 0 "
        "DURING %s,%s"
    ),
    # (3)
    'product_groups': (
        "SELECT CampaignName, CampaignId, AdGroupName, AdGroupId, "
        "ProductGroup, Device, Impressions, Clicks, Conversions "
        "FROM PRODUCT_PARTITION_REPORT "
        "WHERE CampaignStatus IN ['ENABLED', 'PAUSED'] "
        "AND AdGroupStatus IN ['ENABLED', 'PAUSED'] "
        "AND PartitionType = UNIT AND Impressions > 0 "
        "DURING %s,%s"
    ),
    # (4)
    'product_groups_zero_impressions': (
        "SELECT CampaignName, CampaignId, AdGroupName, AdGroupId, "
        "ProductGroup, Device "
        "FROM PRODUCT_PARTITION_REPORT "
        "WHERE CampaignStatus IN ['ENABLED', 'PAUSED'] "
        "AND AdGroupStatus IN ['ENABLED', 'PAUSED'] "
        "AND PartitionType = UNIT AND Impressions = 0 "
        "DURING %s,%s"
    )


for name, awqlQueryTpl in queries.iteritems():
    awqlQuery = awqlQueryTpl % (startdate, enddate)
    with open(name+'.csv', 'w') as file_:
        report_downloader.DownloadReportWithAwql(awqlQuery, 'CSV', file_,
            skip_report_header=True, skip_column_header=False,
            skip_report_summary=True)

(敏感数据已被删除...)

对查询的一些解释:

    第一个查询包括统计数据,但没有设备拆分。选择统计属性(如展示次数、点击次数等)时,不能返回零展示次数!

    此查询不包含统计数据,因此我可以获得零展示次数的缺失数据。此处没有设备拆分。

    此查询包括统计数据,数据按设备类型拆分。此处无法返回零展示次数。

    此查询没有统计数据,但有设备类型拆分。此处仅返回零展示数据

我结合了查询 1+2(=Case A)和查询 3+4(=Case B)的结果。 对于案例 B,我合并了按设备类型拆分的数据。所以相比之下,这个结果和(A)的结果应该是相同的——但事实并非如此! 尽管两种情况下的统计数据都匹配,但差异在于零展示数据 - (A) 中的条目比 B 中的多 900 多个。

当我在没有设备但包含零展示次数的情况下进行查询 (4) 时,我还会获得展示次数为零且已暂停的广告系列(这是我想要的)。但是当我使用设备 (3) 进行查询时,我根本没有收到该广告系列...

我已经证明了这一切两次:合并和比较数据时我没有出错。我用来自KEYWORD_PERFORMANCE_REPORT 的数据做了同样的测试,绝对没有问题!

我希望这是足够的信息,可以在这里获得一些帮助...

查看我上面的问题。

【问题讨论】:

【参考方案1】:

好的,解决方案是在 DownloadReportWithAwql() 函数中添加include_zero_impressions=True,并从查询中删除impressions=0

for name, awqlQueryTpl in queries.iteritems():
    awqlQuery = awqlQueryTpl % (startdate, enddate)
    with open(name+'.csv', 'w') as file_:
        report_downloader.DownloadReportWithAwql(awqlQuery, 'CSV', file_,
            skip_report_header=True, skip_column_header=False,
            skip_report_summary=True, include_zero_impressions=True)

我认为在查询本身中使用impacts=0 和impresss>0 具有相同的效果,但似乎我的期望是错误的。

【讨论】:

以上是关于AWQL:在 PRODUCT_PARTITION_REPORT 中包含设备类型会导致更少的零展示数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWQL 获取“星期几”报告

AWQL:在 PRODUCT_PARTITION_REPORT 中包含设备类型会导致更少的零展示数据?

基本 AWQL 请求 - CAMPAING_PERFORMANCE 仅按“日期”拆分

如何使用 Adwords Api 在一次通话中获取每日费用报告

将 Google Ads 数据导出到特定单元格范围

Google Adwords API 报告实用程序 - PHP - XML 无效?