Google analytics 如何构造google analytics查询以避免配额限制?

Google analytics 如何构造google analytics查询以避免配额限制?,google-analytics,google-analytics-api,Google Analytics,Google Analytics Api,这是我要求的一部分。在两年的时间里,我每天都有725个这样的请求 我正在为我创建的特定数据集获取30天流量分析 当我尝试查询所有725个数据集的分析时,每100秒每个用户都会收到配额错误请求,即使我输入了时间。在每个请求之前暂停(2) 我还能做些什么来避免达到API配额吗 { "reportRequests":[ { "viewId":"104649158", "dateRanges":[ {

这是我要求的一部分。在两年的时间里,我每天都有725个这样的请求

我正在为我创建的特定数据集获取30天流量分析

当我尝试查询所有725个数据集的分析时,每100秒每个用户都会收到配额错误
请求
,即使我输入了
时间。在每个请求之前暂停(2)

我还能做些什么来避免达到API配额吗

{
   "reportRequests":[
      {
         "viewId":"104649158",
         "dateRanges":[
            {
               "startDate":"2017-12-01",
               "endDate":"2017-12-31"
            }
         ],
         "metrics":[
            {
               "expression":"ga:pageviews"
            },
            {
               "expression":"ga:uniquePageviews"
            },
            {
               "expression":"ga:pageviewsPerSession"
            },
            {
               "expression":"ga:timeOnPage"
            },
            {
               "expression":"ga:avgTimeOnPage"
            },
            {
               "expression":"ga:entrances"
            },
            {
               "expression":"ga:entranceRate"
            },
            {
               "expression":"ga:exitRate"
            },
            {
               "expression":"ga:exits"
            }
         ],
         "dimensions":[
            {
               "name":"ga:pagePathLevel2"
            }
         ],
         "dimensionFilterClauses":[
            {
               "filters":[
                  {
                     "dimensionName":"ga:pagePathLevel2",
                     "operator":"REGEXP",
                     "expressions":[
                        "23708|23707|23706|23705|23704|23703|23702|23701|23700|23699|23698|23697|23696|23695|23694|23693|23692"
                     ]
                  }
               ]
            }
         ]
      }
   ]
}
1)您应该将用户配额增加到1000个请求(如果尚未完成)进入Coogle云控制台->左上菜单->API和服务->分析报告API->配额:


2)您可以增加时间范围,并使用维度仍然可以获得每月明细但是,您可能会面临采样问题:因为您的查询是“自定义的”(您使用过滤器+维度)(无论响应中实际包含多少个维度)。在这种情况下,没有绝对的答案,你必须找到最适合你的时间范围。将帮助您检测采样,如果需要,您将需要

您可以请求增加配额,这是正确的。这将增加您可以发出的请求的总数。这仍然是有限的

在API控制台中,有一个类似的配额,称为每个用户每100秒的请求数。默认情况下,它设置为每个用户每100秒100个请求,并且可以调整为最大值1000。但对API的请求数量限制为每个用户每秒最多10个请求

每100秒每个用户的请求数 是一个基于用户的配额,它链接到每个用户配额每秒最多10个请求(每个IP地址每秒10个查询(QPS))。这基本上是防洪。它可以防止单个用户针对api发出多个请求,从而使其他用户很难使用api

您首先需要了解的是,每秒每个用户100个请求是非常主观的。当你运行你的请求时,你真的没有办法知道你的请求将在哪台服务器上运行如果你是该服务器上唯一运行的服务器,那么你可能在10秒内启动100个请求,然后在接下来的90秒内被阻止

报价人 您需要知道的第二件事是,基于用户通常意味着基于ip,因此,如果这些请求可能与不同的视图冲突,但如果它们都从相同的ip地址运行,则可能会引起一些混淆,并假定您是同一个用户。为了解决这个问题,你可以使用另一个名为quota User的参数,你可以在每个请求中向它发送一个随机字符串,它可以帮助它不会完全减少,谷歌最终会理解你在做什么

quotaUser唯一标识用户的任意字符串。
允许您从服务器端应用程序强制执行每用户配额,即使在用户的IP地址未知的情况下也是如此。例如,代表用户在App Engine上运行cron作业的应用程序可能会出现这种情况。 您可以选择唯一标识用户的任意字符串,但限制为40个字符。 了解更多关于

实现指数退避 谷歌通常建议你实现一种称为指数退避的方法。这基本上意味着,如果请求失败,你会尝试一个请求,然后等待几秒钟,如果失败,再重试,然后等待两倍于之前等待的时间,然后再试一次。你这样做大约10次,通常你都能成功

如果您使用的是一个官方的google客户端库,大多数库都已经实现了指数退避

防洪器 不久前,我写了一篇文章,我称之为flood buster,这是一种跟踪我尝试阻止用户配额错误的速度的方法。代码是C语言的,你可能会发现它很有用

不是什么问题 虽然得到这些错误可能是丑陋的,但这并不重要,你应该再次提出请求。谷歌不会把这个错误算作你的罪魁祸首,除非你一次持续做几个小时

每个项目2000个请求100秒 您需要记住,您的项目每100秒可以发出的请求总数是2000。这是不能增加的

因此,如果您有两个用户,每个用户每100秒吃掉1000个请求,那么您将达到基于项目的配额,对此您无能为力。允许一个用户吃掉所有配额在我看来不是一个好主意,除非这是一个单用户应用程序