Php 谷歌分析API:为什么API数据与';在分析仪表板上可以看到什么?
我已经对此进行了一段时间的研究,从我收集的资料来看,它与采样级别有关 我从大多数其他stackoverflow问题中收集到的问题是,除非我有一个高级帐户,否则数据将始终以采样的方式返回 值得一问的是,是否有任何方法可以改变我的谷歌API查询,使数据更加准确 我的查询代码:Php 谷歌分析API:为什么API数据与';在分析仪表板上可以看到什么?,php,google-analytics,google-api,google-analytics-api,google-api-php-client,Php,Google Analytics,Google Api,Google Analytics Api,Google Api Php Client,我已经对此进行了一段时间的研究,从我收集的资料来看,它与采样级别有关 我从大多数其他stackoverflow问题中收集到的问题是,除非我有一个高级帐户,否则数据将始终以采样的方式返回 值得一问的是,是否有任何方法可以改变我的谷歌API查询,使数据更加准确 我的查询代码: $profiles = $analytics->management_profiles ->listManagementProfiles('myID', '~all'); foreach ($profil
$profiles = $analytics->management_profiles
->listManagementProfiles('myID', '~all');
foreach ($profiles->getItems() as $profile) {
$IDvalue = $profile->getId();
array_push($profilesArray, $IDvalue);
}
foreach ($profilesArray as $p) {
$results = $analytics->data_ga->get(
'ga:' . $p,
'7daysAgo',
'today',
'ga:sessions');
$profileName = $results->getProfileInfo()->getProfileName();
$rows = $results->getRows();
$sessions = $rows[0][0];
print "Profile Name: $profileName";
echo "<br>";
print "Total Sessions: $sessions";
echo "<br><br>";
}
我也试过:
$results = $analytics->data_ga->get(
'ga:' . $p,
'7daysAgo',
'today',
'ga:sessions',
'ga:samplingLevel==HIGHER_PRECISION');
但是查询中断,并表示id丢失以及其他多个错误。我意识到我的查询可能不正确,但是任何能够指出正确的方式编写我的查询的人都会大有裨益。这种方法可行吗?或者我需要一个高级帐户来完成我想做的事情吗?
在给定的时间段内,当会话或事件数量较多时,往往会发生采样。
处理采样的选项:
- 缩短日期范围
- 减少维度的数量
- 增加
采样级别
是否包含sampleddata
。此外,在查询中,您正在请求今天的数据,默认情况下,在UI中,它们会向您显示昨天的数据。今天的数据仍在输入,因此根据您查询API的时间,您将获得不同会话数的答案
API错误:
您的代码存在一些问题。我建议查看一些和,以了解API的结构。例如,您需要以数组形式传入可选参数:
foreach ($profilesArray as $p) {
$optParams = array(
'dimensions' => 'ga:source,ga:keyword',
'sort' => '-ga:sessions,ga:source',
'filters' => 'ga:medium==organic',
'max-results' => '25',
'samplingLevel' => 'HIGHER_PRECISION');
$results = $analytics->data_ga->get(
'ga:' + $p,
'7daysAgo',
'today',
'ga:sessions',
$optParams);
...
// Do something with the $results.
}
警告的话,API是受限制的,所以如果您有超过10个视图(配置文件),您的API将返回一个速率限制错误,因为查询太快。实施速率限制和指数退避是一种很好的做法
迁移到分析报告API V4
我们都喜欢有闪亮的新玩具。继续考虑迁移到。你已经做了艰苦的工作,他们提供了一个很好的解决方案
堆栈溢出通知
StackOverflow是一个获得实现帮助的好地方,您在包含代码方面做得很好(您会惊讶有多少人不这么做)。我还建议包括您的错误响应、stacktraces以及您在网上看到的资源 这是一个非常糟糕的帖子。很好的包装与惊人的材料!你能回答我这个问题吗:比如说,我拥有的视图数量实际上是52,所以当我询问profiles->sessions时,这个数字会被证明是不正确的,因为我一次拉得太多了?谷歌会歪曲数据吗?还有。。知道为什么即使我查询一个id,我得到的数据也不能反映google Analytics仪表板上的内容吗?两个问题:1。速率限制,API是速率限制的,您可以每秒发出大约10到20个请求,如果您请求更多,数据将不会更改。只是前10个请求将成功,下42个请求将失败。2.采样取决于视图中的数据,会话是否过多?你会被采样的。请求全年的数据?你会被取样的。如果不采样,为什么会有差异?检查日期范围,检查分段,检查过滤器,检查维度,最后检查度量。可能性是其中一个参数不同。对于过滤器,我使用的是
ga:medium==organic
。对于samplingLevel,我使用更高的精度
作为传入的参数。查询本身仅在过去7天内查询54个视图,会话范围从300到3000。所以这限制了我试图获取的信息的速率,因为有太多的视图?检查响应,它会告诉你。如果响应的值为containsSampledData
,则它是采样。如果响应返回一个4XX
响应,那是因为您得到了一个。
foreach ($profilesArray as $p) {
$optParams = array(
'dimensions' => 'ga:source,ga:keyword',
'sort' => '-ga:sessions,ga:source',
'filters' => 'ga:medium==organic',
'max-results' => '25',
'samplingLevel' => 'HIGHER_PRECISION');
$results = $analytics->data_ga->get(
'ga:' + $p,
'7daysAgo',
'today',
'ga:sessions',
$optParams);
...
// Do something with the $results.
}