使用变量/维度过滤时,使用Google Core Reporting API和bigquery的用户数量不正确且不一致

时间:2015-05-07 13:45:01

标签: python google-analytics google-api google-bigquery

背景:我有应用和网络数据,我的一些应用程序(新的iOS版本)使用GA维度,其余(Android和Web)使用GA自定义变量。

首先,我正在尝试在查询资源管理器中的BigQuery中复制此查询,以便仅为我的网络用户在定义的日期获取简单的用户计数:

select count(distinct fullvisitorid, 10000000) as users
 from table_date_range([12345678.ga_sessions_],    
 timestamp('2015-02-01'), timestamp('2015-03-01')) 
  where hits.customvariables.customvarvalue like '%web%'

我获得了大约534万用户。这与我在Google Analytics中看到的相对应。我相信这个数字是正确的。

如果我进入查询资源管理器并且不应用任何过滤器(因此我包括我的应用程序和Web用户),我会获得5.70m用户。同样,这与谷歌分析相对应,我们相信这个数字是正确的,网络占我们流量的大部分。

如果我在查询资源管理器中运行另一个查询,但这次应用了过滤器:

ga:customVarValue1=@web

我获得了873万用户。因此,在应用过滤器之后,我有更多用户...显然这不正确,并且与查询资源管理器如何应用过滤器后期聚合有关。

注意:当我在BigQuery中运行此查询时:

select sum(users)
from (
   select count(distinct fullvisitorid, 1000000) as users,
    hits.customvariables.customvarvalue as platform
   from table_date_range([12345678.ga_sessions_],    
    timestamp('2015-02-01'), timestamp('2015-03-01')) 
   group each by 2)
    where platform like '%web%'

我获得了873万用户。几乎与我在查询资源管理器中应用过滤器时获得的数字完全相同,我得到的差异大约为1%可以通过抽样来解释。我已经在多个日期测试了它,所以我确信这就是正在发生的事情。应用过滤器后期聚合而不是pre(在我的第一个BigQuery查询中)会导致更多用户,因为我们在此时间段内有两个Web版本。因此,对于他们使用的每个Web版本,所有用户都被计算一次。

添加: 我团队的一位开发人员在二月份写了一些Python脚本,它复制了上面写的第一个BigQuery代码(一个简单的用户计数,其中变量= web),而是点击Core Reporting API并请求一个非抽样的报告。在2015年3月5日之前,我们使用BigQuery和Python脚本的用户数几乎相同(由于采样,差异为1%)。然后在3月5日他们开始分歧,即使是历史用户数,而我们的Python脚本开始产生类似于查询资源管理器的计数(过滤器在聚合后应用而不是预先)。

我的问题是: 1. 3月5日发生了什么变化? 2.我们如何在Query explorer中复制上面的第一个BigQuery代码?我们正确应用可变过滤器吗? 3.我们如何在我们的Python脚本中复制BigQuery代码,该脚本符合Core报告API?

最后: 在查询资源管理器中,我要求在给定日期内进行用户计数,而是使用维度过滤器:

ga:dimension2=@ios

运行时,我比BigQuery得到的时间少50%:

select count(distinct fullvisitorid, 10000000) as users
 from table_date_range([12345678.ga_sessions_],    
 timestamp('2015-02-01'), timestamp('2015-03-01')) 
  where hits.customdimensions.value like '%ios%'

如果过滤器在聚合后应用,就像使用变量过滤那样,那么我会获得更高的用户数,而不是更少。我严重无法解释查询资源管理器正在做什么,以便在过滤维度时给予我大大降低的计数。

请停止

1 个答案:

答案 0 :(得分:1)

我没有为您解答,但由于您使用的是BigQuery,我认为您是高级客户?如果是这样,您可以与他们的支持团队打开一张票 - 他们应该尽快给您回复。