Google analytics GA在BigQuery中的页面平均时间

Google analytics GA在BigQuery中的页面平均时间,google-analytics,google-bigquery,Google Analytics,Google Bigquery,我很难从后端GA BigQuery导出数据计算出页面上的平均时间,我想知道是否有人会看到下面的代码看起来是否合理 我很难从查询资源管理器工具中获取与之匹配的内容 有没有办法为LondonCycleHelmet数据运行查询资源管理器工具 非常感谢您的帮助,谢谢 select pageviews, exit_pageviews, sum_hit_length_seconds, sum_hit_length_seconds / (pageviews - exit_pageviews)

我很难从后端GA BigQuery导出数据计算出页面上的平均时间,我想知道是否有人会看到下面的代码看起来是否合理

我很难从查询资源管理器工具中获取与之匹配的内容

有没有办法为LondonCycleHelmet数据运行查询资源管理器工具

非常感谢您的帮助,谢谢

select
  pageviews,
  exit_pageviews,
  sum_hit_length_seconds,
  sum_hit_length_seconds / (pageviews - exit_pageviews) as avg_time_on_page
from
  (
  select 
    SUM(hit_length_seconds) as sum_hit_length_seconds, 
    COUNT(IF(hits.type='PAGE',(CONCAT(session_key,'_',hits.page.hostname,'_',hits.page.pagePath)),NULL)) AS pageviews,
    COUNT(IF((next_hit_time is null) or (hits.hitNumber=hits_hitNumber_max),(CONCAT(session_key,'_',hits.page.hostname,'_',hits.page.pagePath)),NULL)) AS exit_pageviews,
  from
    (
    select
      *,
      (next_hit_time-hits.time)/1000 as hit_length_seconds,
    from
      (
      select
        fullVisitorId,
        visitId,
        visitorId,
        hits.type,
        hits.time,
        hits.hitNumber,
        hits.page.hostname,
        hits.page.pagePath,
        -- create some keys to handle data later
        concat(fullVisitorId,"_",string(visitId)) as session_key,
        concat(fullVisitorId,"_",string(visitId),"_",string(hits.hitNumber),"_",string(hits.time)) as hit_key,
        -- get max and min number of hits for each session
        MAX(hits.hitNumber) WITHIN RECORD AS hits_hitNumber_max,
        MIN(hits.hitNumber) WITHIN RECORD AS hits_hitNumber_min,    
        -- get min and max hit times to work out full session length
        MAX(hits.time) WITHIN RECORD AS hits_time_max,
        MIN(hits.time) WITHIN RECORD AS hits_time_min,        
        -- get next and previous hit time to be able to work out length of each hit
        LAG(hits.time, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.time ASC) as previous_hit_time,
        LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.time ASC) as next_hit_time,
      from
        [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] 
      )
    )
  )
更新/澄清

我认为,当我在一段时间内看一个单独的页面时,它开始出问题

例如,如果我在BigQuery中运行以下命令:

select
  pageviews,
  exit_pageviews,
  sum_hit_length_seconds,
  sum_hit_length_seconds / (pageviews - exit_pageviews) as avg_time_on_page
from
  (
  select 
    SUM(hit_length_seconds) as sum_hit_length_seconds, 
    COUNT(IF(hits.type='PAGE',(CONCAT(session_key,'_',hits.page.hostname,'_',hits.page.pagePath)),NULL)) AS pageviews,
    COUNT(IF((next_hit_time is null) or (hits.hitNumber=hits_hitNumber_max),(CONCAT(session_key,'_',hits.page.hostname,'_',hits.page.pagePath)),NULL)) AS exit_pageviews,
  from
    (
    select
      *,
      (next_hit_time-hits.time)/1000 as hit_length_seconds,
    from
      (
      select
        fullVisitorId,
        visitId,
        visitorId,
        hits.type,
        hits.time,
        hits.hitNumber,
        hits.page.hostname,
        hits.page.pagePath,
        -- create some keys to handle data later
        concat(fullVisitorId,"_",string(visitId)) as session_key,
        concat(fullVisitorId,"_",string(visitId),"_",string(hits.hitNumber),"_",string(hits.time)) as hit_key,
        -- get max and min number of hits for each session
        MAX(hits.hitNumber) WITHIN RECORD AS hits_hitNumber_max,
        MIN(hits.hitNumber) WITHIN RECORD AS hits_hitNumber_min,    
        -- get min and max hit times to work out full session length
        MAX(hits.time) WITHIN RECORD AS hits_time_max,
        MIN(hits.time) WITHIN RECORD AS hits_time_min,        
        -- get next and previous hit time to be able to work out length of each hit
        LAG(hits.time, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.time ASC) as previous_hit_time,
        LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.time ASC) as next_hit_time,
      from
        [XXX.ga_sessions_20151001],
        [XXX.ga_sessions_20151002],
        [XXX.ga_sessions_20151003],
      where
        hits.page.pagePath='/2015/10/01/blah-blah/'            
      )
    )
  ) 
我得到:

[ { “浏览量”:“24002”, “退出页面浏览量”:“22468”, “总和命中长度秒”:“455762.1240000001”, “页面上的平均时间”:“297.106990873533333” } ]

但如果我像这样看查询资源管理器:

我得到:

所以看起来页面浏览量是匹配的,但页面上的出口和时间似乎完全不同,我不明白为什么

有人能在您自己的数据上重新创建此示例吗


有一种感觉它与GA中如何计算页面上的出口和时间有关,但在BQ GA食谱中找不到任何关于如何计算页面上的时间或出口的示例

我不明白你说的查询浏览器是什么意思。您可以直接在资源管理器中复制此查询,它可以正常工作。不管怎样,从我所看到的来看,它看起来不错。我是说GA开发者thingy:啊!谢谢你的澄清。我以为你指的是BQ GUI。我不太了解它的分析方面,尽管我会问,因为sql查询与我使用ga查询资源管理器时得到的结果不匹配。它是与前端对齐的ga查询资源管理器。但问题是,我无法将ga query explorer指向伦敦自行车头盔,这意味着我无法在这里给出完整的图片。我不清楚“exitPageviews”/“pageviews”计数是否与ga定义的持续时间相匹配。我不是GA方面的专家,所以我在这里很容易出错,但从它看来duration有几个奇怪的例子。从这个角度来看,页面上的平均时间也不完全准确。