如何在一个服务帐户下扩展Google Analytics应用?

时间:2014-04-05 03:13:10

标签: api architecture google-analytics google-analytics-api

我们是一个分销平台,我们计划在我们自己的高流量网站的 Google Analytics (GA)数据之上构建分析服务,作为我们用户的服务。用户基本上可以看到他们上传到我们网站的资产如何随着时间的推移而发挥作用。

为此,我们创建了一个小型Web应用程序,允许我们的用户通过Node.js应用程序( oAuth2 )查询我们自己的GA数据,该应用程序向 GA发出请求使用我们的访问令牌在一个服务帐户下的API

稍微使用此应用程序并开始扩展后,我们发现 GA API 具有相当强的局限性,这使得难以扩展。

如果一个人在一个服务帐户下发出请求,则每秒/不能执行10个以上的个请求,并且不会超过4个请求同时。这是一个showstopper,这使我们无法将我们的应用程序推广到数百名用户。

对于如何扩展在一个服务帐户下发出请求的Google API应用,您有任何建议吗?

2 个答案:

答案 0 :(得分:2)

你忘记了另一个限制。每个视图(个人资料)每天最多可以提出10k个请求。你很快就会把这个配额吹掉。没有办法扩展或每秒10个请求的配额。

我建议您创建一个脚本,将您的数据提取到服务器上,然后将这些数据提供给您的用户。然后,您只需要从GA请求一次数据,您将绕过所有配额限制。

第二个选项是创建多个客户端ID,并为不同的用户组分配不同的客户端ID。但IMO这个规模不大,管理起来也很困难。所以我不建议你使用它。


无法让Google每秒延长10个请求或每个视图的10k个请求。因为您将始终从同一视图请求,我认为最好的选择是每晚将数据提取到您自己的服务器上,然后从那里将其提供给您的用户。

由于您没有说明您正在做什么平台或语言,我将举例说明可以做些什么,我个人为解决这个问题所做的工作。

我创建了一个自定义SSIS连接管理器,它使用OAuth2连接到Google的身份验证服务器。然后,我创建了一个自定义数据流任务,该任务使用连接管理器来获取与Google AnalyticsAPI的连接。然后我创建了一个SSIS包,它请求我需要的信息到SQL Server这个作业每晚运行,以确保我拥有我需要的所有数据。

要记住的一些事情:

  1. 24小时以下的数据还没有完成处理,昨天不打扰选择。之后数据稳定,因此您永远不需要再次请求它。
  2. 根据您的Google分析中的数据量,确保您以较小的块数请求它,否则您最终会获得抽样或超时。但这取决于网站的繁忙程度。我有一个网站,每月有150万条记录,我不得不日复一日,以防止超时。
  3. 您可以使用GA API一次选择最多7个维度,但使用creative filtering可以稍微解决一下。
  4. 如果您发布有关您拥有的系统类型以及您可以访问的编程语言的更多信息,我可能会提供更多帮助。这只是一个例子。

答案 1 :(得分:2)

作为替代方案,您可以尝试使用Piwik.org,您可以在其中获得与GA相同的指标,但不要遇到硬件以外的限制(有关详细信息,请参阅Piwik's Data Limitations页面)。它有一个非常容易使用和实现的REST API(参见API usage examples here)。