Web界面和API

时间:2016-09-06 20:55:02

标签: c# google-analytics-api

使用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结果与网络界面完全匹配?原因是我需要让域专家验证报告,这个人将使用网络界面作为事实来源。

1 个答案:

答案 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"
    ]
  }

我称之为错误。