使用Google.Apis.AnalyticsReporting.v4,我发布了一个简单的查询来获取按城市划分的地理位置数据。
在网络界面中,我看到:
City Sessions Saint Cloud Jun 15, 2016 - Jun 30, 2016 60,279
在API响应中,我看到:
"dimensions": [
"Saint Cloud"
],
"metrics": [
{
"values": [
"60300"
]
}
这些数字不匹配。
这里是Fiddler中的JSON请求主体:
{
"reportRequests": [{
"dateRanges": [{
"endDate": "2016-06-30",
"startDate": "2016-06-15"
}, {
"endDate": "2015-06-30",
"startDate": "2015-06-15"
}],
"dimensions": [{
"name": "ga:city"
}],
"metrics": [{
"expression": "ga:sessions"
}],
"orderBys": [{
"fieldName": "ga:sessions",
"orderType": "VALUE",
"sortOrder": "DESCENDING"
}],
"pageSize": 10,
"samplingLevel": "LARGE",
"viewId": "123"
}]
}
我尝试了各种采样级别,并得到了相同的结果。
网络报告不有黄色"此报告基于"采样盒。我没有添加任何细分。
有没有办法让API结果与网络界面完全匹配?原因是我需要让域专家验证报告,这个人将使用网络界面作为事实来源。
答案 0 :(得分:1)
问题在于API正在根据城市名称聚合数据,而城市名称并不是唯一的。在这种情况下,有一个圣云,MN和一个圣云,佛罗里达州。网络界面不汇总这两个;您可以通过为城市名称添加“包含”过滤器来查看此内容。
http://www.freeformatter.com/regex-tester.html
请注意,60279 + 21 = 60300,API返回的结果。
解决方法是在查询中添加ga:cityId
的辅助维度:
"dimensions": [{
"name": "ga:city"
}, {
"name": "ga:cityId"
}]
这给出了正确的结果:
"dimensions": [
"Saint Cloud",
"1020086"
],
"metrics": [
{
"values": [
"60279"
]
}
我称之为错误。