我在PRODUCT_PARTITION_REPORT中发现了一些不一致的地方。
因此,在我发布测试脚本并给出一些解释之前,我想问一下我的问题:
下面是我用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)中,有900多个条目比B多。
当我查询没有设备,但包含零印象(4),我也得到了运动,具有零印象,并暂停(这是我想要的)。但当我询问设备(3)时,我一点也不明白.
我已经对所有这些进行了两次验证:在合并和比较数据时没有出错。我对来自KEYWORD_PERFORMANCE_REPORT的数据做了同样的测试,绝对没有问题!
我希望这是足够的信息在这里得到帮助..。
见上面我的问题。
发布于 2015-12-08 15:16:05
好的,解决方案是将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)我认为在查询中使用impressions=0和impressions>0具有相同的效果,但我的预期似乎是错误的。
https://stackoverflow.com/questions/34156056
复制相似问题