google-analytics - Big Query 中的 GA 漏斗分析 - “正确”的会话计数
问题描述
感谢您的光临!我很感激(重新)在 Big Query 中创建最终的 GA 会话漏斗。重点是每个会话的漏斗,在一个会话期间具有某些但不一定按顺序访问的页面。
该解决方案应将会话计为COUNT( DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)))
.
此外,漏斗应该是这样的形式,即只有在前一个步骤已经在会话中完成时才能到达每个漏斗步骤(例如,只有在会话期间访问了步骤 1-3 时才应计算第四步)。但是,这些步骤不需要连续执行
不幸的是,这就是为什么我非常喜欢这个示例对我不起作用的原因。它返回 的访问次数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
.
另一个例子着眼于用户会话(我印象深刻,也绝对害怕,@Martin 的道具)据称,当我写这个#StuffGettingLostOnline 时,有一个网站应该全部关闭
我的方法看起来像这样。但它只返回具有单个页面视图的会话,而不是顺序的:
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""]
)
有任何想法吗?任何人都能够使用“正确”的会话计数重新创建最终的大查询漏斗吗?
解决方案
您可以使用内联子查询来检查漏斗的各个步骤:
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
推荐阅读
- mysql - 如何在mysql中根据时间间隔选择行?
- c - 如何在 CLion 中为 .h 文件自动生成和更新函数声明(原型)?
- swift - 当我将 MKCircle 添加到 mapKit 的叠加层时,我在编译器中收到了很多警告
- python - 将 Python 字典转换为嵌套字典
- java - 从休息控制器方法请求 String [] + String as Json
- ios - 在 Swift 4 中以编程方式获取信号强度
- java - redis.clients.jedis.exceptions.JedisConnectionException:连接到redis集群时无法从池中获取资源
- python - 比较第2列中的值对应于python中第1列的相等值
- python - 附加一个 numpy 数组,但在二维中组织附加信息
- c - 如何使用序号日和 1 月 1 日的星期几计算 ISO 工作日?