Php 谷歌分析API:为什么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

我已经对此进行了一段时间的研究,从我收集的资料来看,它与采样级别有关

我从大多数其他stackoverflow问题中收集到的问题是,除非我有一个高级帐户,否则数据将始终以采样的方式返回

值得一问的是,是否有任何方法可以改变我的谷歌API查询,使数据更加准确

我的查询代码:

$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.
}