Google Analytics API:为什么 API 数据与 Analytics 仪表板上看到的数据不同?

Lat*_*nis 5 php google-analytics google-api google-analytics-api google-api-php-client

我已经研究这个有一段时间了,根据我收集的信息,它与抽样级别有关。

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

值得一问的是,有没有办法可以改变我的 Google 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>";
}
Run Code Online (Sandbox Code Playgroud)

我尝试将我的更改get()为:

    $results = $analytics->data_ga->get(
        'ga:' . $p,
        '7daysAgo',
        'today',
        'ga:sessions',
        'samplingLevel:HIGHER_PRECISION');
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

    $results = $analytics->data_ga->get(
        'ga:' . $p,
        '7daysAgo',
        'today',
        'ga:sessions',
        'ga:samplingLevel==HIGHER_PRECISION');
Run Code Online (Sandbox Code Playgroud)

但查询中断并表示 id 丢失以及多个其他错误。我意识到我可能没有正确地进行查询,但是任何能够指出编写查询的正确方法的人都会有很大帮助。这种方法可能吗?或者我需要一个高级帐户来完成我想要做的事情吗?

Mat*_*att 3

采样

当给定时间段内有大量会话或事件时,往往会进行采样。处理采样的选项:

  • 缩短日期范围。
  • 减少维数。
  • 增加samplingLevel

进行猜测,并containSampledData通过检查字段的响应来验证您的结果containsSampledData。此外,在您的查询中,您正在请求今天的数据,默认情况下,它们会在用户界面中向您显示昨天的数据。今天的数据仍在输入中,因此根据您查询 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.
}
Run Code Online (Sandbox Code Playgroud)

警告的话,API 受限制 和 配额 的约束,因此,如果您有超过 10 个视图(配置文件),您的 API 将因查询太快而返回速率限制错误。实施速率限制和指数退避是一种很好的做法。

迁移到分析报告 API V4

我们都喜欢拥有闪亮的新玩具。继续考虑迁移到Analytics Reporting API V4。您已经完成了弄清楚OAuth的艰苦工作,并且他们提供了很棒的迁移指南

StackOverflow 建议

StackOverflow 是获得实现帮助的好地方,并且您在包含代码方面做得很好(您会惊讶有很多人没有这样做)。我还建议包括您的错误响应、堆栈跟踪以及您在网上看到的资源。