【问题标题】:Finding out user's second page after visiting homepage in Bigquery在 Bigquery 中访问主页后找出用户的第二页
【发布时间】:2019-10-14 10:15:42
【问题描述】:

我想知道用户在 BigQuery 中登陆首页后访问了哪个页面。

以下是我目前想到的查询,但是当我查看第二页时返回的结果与 Google Analytics 不一致(来自 [行为] --> [站点内容] --> [所有页面] -- > 主要维度:着陆页,次要维度:第二页)。

但是,当我查看 Next Pagepath 时,查询结果匹配(从 [Site Content] --> [All Pages] --> Primary Dimension: Landing Page, Secondary Dimension: Next Page path)。

多篇文章说使用[Second page]比[Next pagepath]更合适。

-- Total pageviews by pagepath after landing homepage
#standardSQL
SELECT
  next_page.pagePath AS pagePath,
  COUNT(*) as pageviews
FROM
  (
    SELECT
      CONCAT(fullVisitorId, ".", CAST(visitId AS STRING)) AS session_id,
      hits.page.pagePath AS pagePath,
      hits.hitNumber AS hitNumber,
      hits.type AS type
    FROM
      `GA_data.ga_sessions_*`,
      UNNEST(hits) as hits
    WHERE
      _TABLE_SUFFIX BETWEEN '20190814'
      AND '20191008'
      AND hits.type = 'PAGE'
      AND hits.page.pagePath = '/***/' -- Landing page URL
      AND hits.isEntrance = TRUE
      AND totals.visits = 1
  ) AS landing_hp
  INNER JOIN (
    SELECT
      CONCAT(fullVisitorId, ".", CAST(visitId AS STRING)) AS session_id,
      hits.page.pagePath AS pagePath,
      hits.hitNumber AS hitNumber,
      hits.type AS type
    FROM
      `GA_data.ga_sessions_*`,
      UNNEST(hits) as hits
    WHERE
      _TABLE_SUFFIX BETWEEN '20190814'
      AND '20191008'
      AND hits.type = 'PAGE'
      AND hits.isEntrance IS NULL
      AND totals.visits = 1
  ) AS next_page ON landing_hp.session_id = next_page.session_id
WHERE
  landing_hp.hitNumber < next_page.hitNumber
GROUP BY
  pagePath
ORDER BY
  pageviews DESC 

谁能告诉我为什么会发生这种情况以及我应该使用什么查询?

【问题讨论】:

    标签: google-analytics google-bigquery


    【解决方案1】:

    您的第二个表不一定返回第二页,不是吗?不过,在涉及所有连接的情况下这样做也有点效率低下。

    最好切掉所有的连接,使用子查询:

    SELECT 
      fullvisitorid -- identify user
      ,visitstarttime -- identify session per user
      -- visitid is timestamp of pre-midnight session
      ,visitstarttime<>visitid AS isMidnightSplitSession 
    
      -- get hitnumber and pagepath from hits where the type is not event 
      -- limit to one while sorting by hitnumber - offset 1 to get second page
      ,(SELECT AS STRUCT hitnumber, page.pagePath 
         FROM UNNEST(hits) 
         WHERE type<>'EVENT' 
         ORDER BY hitnumber ASC 
         LIMIT 1 OFFSET 1) AS secondPage
    
      ,(SELECT AS STRUCT hitnumber, page.pagePath FROM UNNEST(hits) 
         WHERE type<>'EVENT' ORDER BY hitnumber ASC LIMIT 1 OFFSET 2) AS thirdPage
    
      -- no need to left join with all those arrays and bloat up the table
    FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` t 
    
    -- check that first page = '/home'
    WHERE (SELECT page.pagePath FROM UNNEST(hits) WHERE isEntrance=true) = '/home'
    
      and totals.pageviews>1 -- for testing purpose
    LIMIT 1000
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多