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:在 PRODUCT_PARTITION_REPORT 中包含设备类型会导致更少的零展示数据?
基本 AWQL 请求 - CAMPAING_PERFORMANCE 仅按“日期”拆分