我在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)
(明智的数据被删除了......)
查询的一些解释:
此第一个查询包含统计数据,但没有设备拆分。选择统计信息属性(如展示次数,点击次数等)时,无法返回零展示次数!
此查询不包含统计数据,因此我可以获得展示次数为零的缺失数据。这里没有设备拆分。
此查询包含统计数据,数据按devicetype分类。此处无法返回零展示次数。
此查询没有统计数据,但设备类型已拆分。此处仅返回零展示数据
我结合了查询1 + 2(=案例A)和查询3 + 4(=案例B)的结果。 对于情况B,我合并了由设备类型分割的数据。因此,相比之下,(A)的结果和结果应该是相同的 - 但事实并非如此! 虽然两种情况下的统计数据都是匹配的,但差异可以在零印象数据中找到 - 在(A)中,与B中的条目相比,有超过900个条目。
当我在没有设备的情况下进行查询但是包含零展示次数(4)时,我也会获得零展示次数并暂停的广告系列(这就是我想要的)。但是,当我使用设备(3)查询时,我根本没有获得该活动......
我已经两次证明了这一点:我在合并和比较数据时没有出错。我使用来自KEYWORD_PERFORMANCE_REPORT
的数据进行了相同的测试,并且绝对没有问题!
我希望这是足够的信息来获得一些帮助...
请参阅上面的问题。
答案 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具有相同的效果,但似乎我的期望是错误的。