Google AnalyticsAPI:为什么API数据与Analytics Dashboard上的内容不同?

时间:2016-08-05 14:37:42

标签: php google-analytics google-api google-analytics-api google-api-php-client

我现在已经研究了一段时间了,从我收集的内容来看,它与 samplingLevel 有关。

我从大多数其他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>";
}

我尝试将get()更改为:

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

我也尝试过:

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

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

1 个答案:

答案 0 :(得分:2)

取样

当您在给定时间段内有大量会话或事件时,往往会发生抽样。 处理抽样的选项:

  • 缩短日期范围。
  • 减少尺寸数量。
  • 增加samplingLevel

通过检查字段containsSampledData的响应来猜测结果并验证结果containSampledData。同样在您的查询中,您要求今天的数据,默认情况下,它们会向您显示昨天的数据。今天的数据仍然存在,因此,根据您查询API的时间,您将获得不同的会话数答案。

API错误:

您的代码存在一些问题。我建议查看一些examples in the docs并查看reference docs以了解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受Limits and Quotas约束,因此如果您有超过10个视图(配置文件),您的API将返回速率限制错误,以便过快查询。优良作法是实现速率限制和指数退避。

迁移到Analytics Reporting API V4

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

StackOverflow建议

StackOverflow是一个获得实施帮助的好地方,你在编写代码方面做得很好(你会感到惊讶,有多少人不知道)。我还建议您提供错误回复,堆栈跟踪以及您在线查看的资源。