使用 Google.Apis.AnalyticsReporting.v4,我发出了一个简单的查询以按城市获取地理/位置数据。
在网络界面中,我看到:
City Sessions Saint Cloud Jun 15, 2016 - Jun 30, 2016 60,279
In the API response, I see:
"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"
}]
}
我尝试了各种采样级别,但得到了相同的结果。
Web 报告没有有黄色的“此报告基于”抽样框。我没有添加任何分割。
有没有办法让 API 结果与网络界面完全匹配?原因是我需要让领域专家验证报告,而这个人将使用 Web 界面作为事实来源。
最佳答案
问题是 API 正在根据城市名称聚合数据,而城市名称不是唯一的。在这种情况下,有一个 Saint Cloud, MN 和一个 Saint Cloud, FL。 Web 界面不会聚合这两者;您可以通过为城市名称添加一个包含过滤器来看到这一点。
注意 60279 + 21 = 60300,API 返回的结果。
解决方法是将 ga:cityId
的次级维度添加到查询中:
"dimensions": [{
"name": "ga:city"
}, {
"name": "ga:cityId"
}]
这给出了正确的结果:
"dimensions": [
"Saint Cloud",
"1020086"
],
"metrics": [
{
"values": [
"60279"
]
}
我认为这是一个错误。
关于c# - Web 界面和 API 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357688/