【问题标题】:Google Analytics API: Why is the API data different than what's being seen on the Analytics Dashboard?Google Analytics API:为什么 API 数据与 Analytics Dashboard 上显示的不同?
【发布时间】:2016-08-05 14:37:41
【问题描述】:

我已经对此进行了一段时间的研究,据我所知,它与 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 以及多个其他错误。我意识到我可能没有做出正确的查询,但是任何能够指出编写查询的正确方法的人都会大有帮助。那和这种方法可能吗?还是我需要一个高级帐户来完成我想做的事情?

【问题讨论】:

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


    【解决方案1】:

    抽样

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

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

    通过检查字段containsSampledData 的响应来猜测结果并验证您的结果是否containSampledData。此外,在您的查询中,您请求今天的数据,默认情况下,它们会在 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 建议

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

    【讨论】:

    • 这是一个非常糟糕的帖子。装满了惊人的材料!你能回答我这个问题吗:比如说我的浏览量实际上是 52,所以当我询问配置文件-> 会话时,这个数字会不正确,因为我一次拉太多了?谷歌会扭曲数据吗?
    • 另外.. 知道为什么即使我查询一个 id,我得到的数据也不能反映 google Analytics Dashboard 上的内容吗?
    • 两个问题: 1. 速率限制,API 是速率限制的,您每秒可以发出大约 10 到 20 个请求,如果您请求更多,数据不会改变,只是前 10 个请求会成功接下来的 42 个将失败。 2. 采样依赖于视图中的数据,会话太多?你会被抽样的。请求全年的数据?你会被抽样的。如果不采样为什么会有差异?检查日期范围,检查细分,检查过滤器,检查维度,最后检查指标。赔率是其中一个参数不同。
    • 对于过滤器,我使用的是ga:medium==organic。对于采样级别,我使用 HIGHER_PRECISION 作为传入的参数。查询本身仅查询过去 7 天的 54 个视图,会话范围为 300-3000。因此,由于查看次数过多,我试图提取的信息会受到速率限制?
    • 查看回复,它会告诉你。如果响应具有containsSampledData 的值,则它正在采样。如果响应返回 4XX 响应,那是因为您收到了 error
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    相关资源
    最近更新 更多