代码之家  ›  专栏  ›  技术社区  ›  LatentDenis

Google Analytics API:为什么API数据与Analytics Dashboard上显示的数据不同?

  •  5
  • LatentDenis  · 技术社区  · 9 年前

    我研究这个已经有一段时间了,据我所知,这与 采样级别 .

    我从大多数其他stackoverflow问题中收集到的问题是,除非我有一个Premium帐户,否则数据总是会以抽样的方式返回。

    值得一问的是,是否有任何方法可以改变我的谷歌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 回复  |  直到 9 年前
        1
  •  3
  •   Matt    9 年前

    取样

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

    • 减少维度的数量。
    • 增加 samplingLevel .

    猜出答案并验证你的结果 containSampledData 通过检查字段的响应 containsSampledData 。在您的查询中,您也在请求 今天的数据 ,默认情况下,它们会在UI中显示昨天的数据。今天的数据仍在输入中,因此当您查询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是一个获得实现帮助的好地方,并且您在包含代码方面做得很好(您会惊讶有多少人没有这样做)。我还建议您包括错误响应、堆栈跟踪以及您在网上看到的资源。