Python AWQL:在产品分区报告中包含设备类型会导致更少的零印象数据?
我在产品分区报告中发现了一些差异 因此,在我发布测试脚本并给出一些解释之前,我想问一下我的问题: 为什么AdWords会有这样的行为? 这种行为是正常的还是错误的? 下面是我用Python编写的小测试脚本,用于通过AWQL查询AdWords购物数据产品组,并将结果存储为CSV:Python AWQL:在产品分区报告中包含设备类型会导致更少的零印象数据?,python,api,google-ads-api,Python,Api,Google Ads Api,我在产品分区报告中发现了一些差异 因此,在我发布测试脚本并给出一些解释之前,我想问一下我的问题: 为什么AdWords会有这样的行为? 这种行为是正常的还是错误的? 下面是我用Python编写的小测试脚本,用于通过AWQL查询AdWords购物数据产品组,并将结果存储为CSV: from googleads import AdWordsClient startdate = '20150801' enddate = '20151130' ADWORDS_API_VERSION = 'v20150
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查询时,我根本就不知道这些活动
我已经两次证明了这一点:我在合并和比较数据时没有出错。我用关键字性能报告中的数据做了同样的测试,完全没有问题
我希望这是足够的信息在这里得到一些帮助
请参阅我上面的问题。好的,解决方案是将include\u zero\u 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具有相同的效果,但似乎我的预期是错误的