大查询中的GA渠道分析-“正确”的会话计数

时间:2019-07-04 22:11:06

标签: google-analytics google-bigquery

谢谢您的光临!我将很高兴(重新)在Big Query中创建最终的GA会话渠道。重点是每个会话的渠道,并且在一个会话期间具有某些但不一定是顺序访问的页面。

Desired result from query

解决方案应将会话计为COUNT( DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)))

此外,渠道应采用以下形式:只有在会话中完成了上一个步骤后,才能到达每个渠道步骤(例如,只有在会话中访问了步骤1-3时,才应计入第四步)。但是,这些步骤不需要连续执行

很遗憾,这就是为什么我非常喜欢的this example对我不起作用。它返回totals.visits访问的数字。另外,我需要在页面上使用REGXP_CONTAINS,因为我的页面上没有用于漏斗步骤的事件(或自定义维度)。对于原始查询(针对每个步骤)

SUM((SELECT 1 FROM UNNEST(hits) WHERE eventInfo.eventAction = 'landing_page' LIMIT 1)) Landing_Page

我尝试过:

COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE REGEXP_CONTAINS(hits.page.pagePath, r”myfunnelpage”)

但是,根据COUNT( DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING))) AS overday_sessions,我的渠道访问实际上比我的总“会话”还多。

另一个example看着用户会话(@Martin的道具给我留下了深刻的印象,也给我带来了极大的威胁) 据称,当我编写此#StuffGettingLostOnline

时,有一个website应该全部关闭

我的方法看起来像这样。但它仅返回具有单个页面视图的会话,而不返回顺序页面:

SELECT
  date,       
  COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewpage") LIMIT 1)) AS product_overview_s1,

  COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE EXISTS(SELECT 1 FROM UNNEST(GA.hitS) WHERE REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewregex")) AND REGEXP_CONTAINS(hits.page.pagePath, cartoverviewregex") LIMIT 1)) AS cart_overview_s2

FROM 
 data as GA,
 UNNEST(GA.hits) AS hits
WHERE hits.type = "PAGE"
AND 
 TRUE IN UNNEST(
  [REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewpage"),
  REGEXP_CONTAINS(hits.page.pagePath, r"cartoverviewregex""]
 )

有什么想法吗?有人能够使用“正确的”会话计数来重新创建最终的大查询漏斗吗?

1 个答案:

答案 0 :(得分:1)

您可以使用内联子查询来检查渠道的各个步骤:

WITH
  sessions AS (
  SELECT
    (
    SELECT
      hits
    FROM
      UNNEST(hits) hits
    WHERE
      hits.page.pagePath = "/"
    ) first_step,
    (
    SELECT
      hits
    FROM
      UNNEST(hits) hits
    WHERE
      hits.page.pagePath = "/basket"
    ) second_step
  FROM
    `project.dataset.ga_sessions_*`)
SELECT
  COUNT(first_step) sessions_step_one,
  COUNTIF(first_step.hitNumber < second_step.hitNumber) sessions_step_two
FROM
  sessions