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

时间:2015-12-08 12:34:35

标签: python api google-adwords

我在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. 此查询不包含统计数据,因此我可以获得展示次数为零的缺失数据。这里没有设备拆分。

  3. 此查询包含统计数据,数据按devicetype分类。此处无法返回零展示次数。

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

  5. 我结合了查询1 + 2(=案例A)和查询3 + 4(=案例B)的结果。 对于情况B,我合并了由设备类型分割的数据。因此,相比之下,(A)的结果和结果应该是相同的 - 但事实并非如此! 虽然两种情况下的统计数据都是匹配的,但差异可以在零印象数据中找到 - 在(A)中,与B中的条目相比,有超过900个条目。

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

    我已经两次证明了这一点:我在合并和比较数据时没有出错。我使用来自KEYWORD_PERFORMANCE_REPORT的数据进行了相同的测试,并且绝对没有问题!

    我希望这是足够的信息来获得一些帮助...

    请参阅上面的问题。

1 个答案:

答案 0 :(得分:1)

好的,解决方案是将include_zero_impressions=True添加到DownloadReportWithAwql()函数并从查询中删除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)

我认为在查询中使用展示次数= 0和展示次数> 0具有相同的效果,但似乎我的期望是错误的。