Google analytics Google Analytics Reporting Api v4报告请求响应具有行计数但为空的行元素
我有980多个ViewID,每天都在运行报告请求。它们正在加载到rs db中 我让报告请求对所有ID进行最初3个月的回填运行 在检查数据时,我们注意到一些ID似乎没有为它们运行回填。我查看了日志,没有收到来自api的任何错误 我开始对单个viewid运行单报告请求,并在响应中返回行值 我在发出请求的应用程序中添加了更多日志记录,因为我想我可能只是没有捕捉到错误 在前850年左右,我得到了预期的结果。过去3个月的数据(如有) 我最近收到的100多个ID中,有行数、最大值、最小值和总计值不为0且为空行元素的ViewID的响应。这就是我现在被困的地方。不确定这是错误还是api的功能。在任何地方都找不到以前提到过的任何类似问题 一些注意事项: 我们每天在一台服务器上同时运行12个报告请求。在Api控制台中,我们每天看到大约12000个请求。发出请求的是一个节点应用程序。在对所有ViewID执行每日报告请求时,我们没有注意到这种情况,我们没有达到每天50000个请求的限制,我们确实实现了指数级回退,当遇到速率限制错误时,我们正在重试 我们的一个报告请求示例:Google analytics Google Analytics Reporting Api v4报告请求响应具有行计数但为空的行元素,google-analytics,google-analytics-api,google-analytics-firebase,Google Analytics,Google Analytics Api,Google Analytics Firebase,我有980多个ViewID,每天都在运行报告请求。它们正在加载到rs db中 我让报告请求对所有ID进行最初3个月的回填运行 在检查数据时,我们注意到一些ID似乎没有为它们运行回填。我查看了日志,没有收到来自api的任何错误 我开始对单个viewid运行单报告请求,并在响应中返回行值 我在发出请求的应用程序中添加了更多日志记录,因为我想我可能只是没有捕捉到错误 在前850年左右,我得到了预期的结果。过去3个月的数据(如有) 我最近收到的100多个ID中,有行数、最大值、最小值和总计值不为0且为空
`{
"reportRequests": [
{
"dateRanges": [
{
"startDate": "2017-06-01",
"endDate" : "2017-09-01"
}
],
"metrics": [
{"expression": "ga:entrances"},
{"expression": "ga:goalAbandonsAll"},
{"expression": "ga:users"},
{"expression": "ga:sessions"},
{"expression": "ga:bounces"},
{"expression": "ga:goalStartsAll"},
{"expression": "ga:sessionDuration"},
{"expression": "ga:goalValueAll"},
{"expression": "ga:pageviews"},
{"expression": "ga:timeOnPage"}
],
"pageSize": 10000,
"includeEmptyRows": true,
"dimensions": [
{"name": "ga:adwordsCreativeID"},
{"name": "ga:adSlot"},
{"name": "ga:adTargetingType"},
{"name": "ga:adDistributionNetwork"},
{"name": "ga:adKeywordMatchType"},
{"name": "ga:hour"},
{"name": "ga:date"}
],
"samplingLevel": "LARGE",
"viewId": "123456789"
}
]
}`
我们看到奇怪的反应:
`{
"columnHeader":{
"dimensions":[
"ga:adwordsCreativeID",
"ga:adSlot",
"ga:adTargetingType",
"ga:adDistributionNetwork",
"ga:adKeywordMatchType",
"ga:hour",
"ga:date"
],
"metricHeader":{
"metricHeaderEntries":[
{"name":"ga:entrances","type":"INTEGER"},{"name":"ga:goalAbandonsAll","type":"INTEGER"},{"name":"ga:users","type":"INTEGER"},{"name":"ga:sessions","type":"INTEGER"},{"name":"ga:bounces","type":"INTEGER"},{"name":"ga:goalStartsAll","type":"INTEGER"},{"name":"ga:sessionDuration","type":"TIME"},{"name":"ga:goalValueAll","type":"CURRENCY"},{"name":"ga:pageviews","type":"INTEGER"},{"name":"ga:timeOnPage","type":"TIME"}
]
}},
"data":{
"totals":[
{"values":["1235","0","1245","1235","1091","0","63517.0","0.0","1450","63515.0"]}
],
"rowCount":602,
"minimums":[
{"values":["0","0","1","0","0","0","0.0","0.0","1","0.0"]}
],
"maximums":[
{"values":["10","0","10","10","8","0","4920.0","0.0","16","4909.0"]}
],
"rows":[]}`
你找到关于这个问题的更多信息了吗?如果你从Google Analytics得到一个“空”报告(只包含min/max/totals)作为回应,那么发送一个新的请求将解决这个问题。 检查报表['data]['rows']是确定报表是否为“空”的一种方法
很高兴我不是唯一一个发生这种事的人,但不高兴它发生了。我很想听到谷歌开发人员讲述可能发生的事情。
response = [...]
while self.is_response_empty(response):
response = [...]
def is_response_empty(self, response):
for report in response.get('reports', []):
try:
report['data']['rows']
return False
except:
return True